Duyệt mảng, kiểm tra n % 2 == 0 (chẵn) else (lẻ), thêm vào 2 List/Array riêng.
Ví dụ minh họa
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
int[] arr = { 77, 34, 59, 42, 99 };
Console.WriteLine("Mảng gốc: " + string.Join(", ", arr));
// Cách 1: List (linh hoạt kích thước)
var evens = new List();
var odds = new List();
foreach (int x in arr)
{
if (x % 2 == 0) evens.Add(x);
else odds.Add(x);
}
Console.WriteLine($"Số chẵn: {string.Join(", ", evens)}");
Console.WriteLine($"Số lẻ: {string.Join(", ", odds)}");
// Cách 2: LINQ (ngắn gọn)
var evensLinq = arr.Where(x => x % 2 == 0).ToArray();
var oddsLinq = arr.Where(x => x % 2 != 0).ToArray();
Console.WriteLine($"\nLINQ - Chẵn: {string.Join(", ", evensLinq)}");
Console.WriteLine($"LINQ - Lẻ: {string.Join(", ", oddsLinq)}");
// Cách 3: Single pass với Tuple (C# 7+)
var (evens2, odds2) = Partition(arr);
Console.WriteLine($"\nSingle pass - Chẵn: {string.Join(", ", evens2)}");
Console.WriteLine($"Single pass - Lẻ: {string.Join(", ", odds2)}");
}
static (List Evens, List Odds) Partition(int[] arr)
{
var evens = new List();
var odds = new List();
foreach (int x in arr)
{
if (x % 2 == 0) evens.Add(x);
else odds.Add(x);
}
return (evens, odds);
}
}
Kết quả đầu ra
Mảng gốc: 77, 34, 59, 42, 99 Số chẵn: 34, 42 Số lẻ: 77, 59, 99 LINQ - Chẵn: 34, 42 LINQ - Lẻ: 77, 59, 99 Single pass - Chẵn: 34, 42 Single pass - Lẻ: 77, 59, 99
Lưu ý: Code gốc dùng mảng kích thước cố định new int[5] - dễ tràn nếu nhiều chẵn/lẻ hơn dự kiến. Dùng List<int> an toàn hơn.