Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tìm phần tử nhỏ thứ K trong mảng 2D bằng C#

Để 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.