Để tìm phần tử nhỏ thứ K (K-th smallest) trong mảng 2D, cách đơn giản: làm phẳng mảng thành 1D, sắp xếp, lấy phần tử tại index K-1.
Ví dụ minh họa
using System;
class Program
{
static void Main()
{
// Mảng 2D (3x3)
int[,] matrix = {
{ 65, 45, 32 },
{ 97, 23, 75 },
{ 59, 12, 88 }
};
int k = 5; // Tìm phần tử nhỏ thứ 5
// Làm phẳng mảng 2D thành 1D
int[] flat = new int[matrix.Length];
int idx = 0;
foreach (int val in matrix)
{
flat[idx++] = val;
}
// Sắp xếp
Array.Sort(flat);
Console.WriteLine("Mảng sau khi sắp xếp:");
foreach (int v in flat) Console.Write($"{v} ");
Console.WriteLine($"\n\nPhần tử nhỏ thứ {k}: {flat[k - 1]}");
}
}
Kết quả đầu ra
Mảng sau khi sắp xếp: 12 23 32 45 59 65 75 88 97 Phần tử nhỏ thứ 5: 59
Cải tiến: Với mảng lớn, dùng thuật toán QuickSelect (O(n) trung bình) thay vì sắp xếp đầy đủ (O(n log n)). .NET không có sẵn, tự triển khai hoặc dùng thư viện.