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

Sắp xếp mảng hai chiều trong C#


Để sắp xếp mảng hai chiều trong C#, sử dụng vòng lặp lồng nhau và thêm vòng lặp thứ ba để hoán đổi các phần tử liền kề trong mỗi hàng (sắp xếp từng hàng).

Thuật toán sắp xếp bong bóng cho từng hàng

for (int k = 0; k < j; k++)
{
    if (arr[i, k] > arr[i, k + 1])
    {
        int temp = arr[i, k];
        arr[i, k] = arr[i, k + 1];
        arr[i, k + 1] = temp;
    }
}

Ví dụ hoàn chỉnh

using System;

namespace Demo
{
    class Program
    {
        static void Main()
        {
            int[,] arr = { 
                { 9, 2, 7 },
                { 4, 5, 1 },
                { 8, 3, 6 } 
            };
            
            Console.WriteLine("Mảng ban đầu:");
            PrintArray(arr);
            
            // Sắp xếp từng hàng
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = arr.GetLength(1) - 1; j > 0; j--)
                {
                    for (int k = 0; k < j; k++)
                    {
                        if (arr[i, k] > arr[i, k + 1])
                        {
                            int temp = arr[i, k];
                            arr[i, k] = arr[i, k + 1];
                            arr[i, k + 1] = temp;
                        }
                    }
                }
            }
            
            Console.WriteLine("\nMảng sau khi sắp xếp từng hàng:");
            PrintArray(arr);
        }
        
        static void PrintArray(int[,] arr)
        {
            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                    Console.Write(arr[i, j] + " ");
                Console.WriteLine();
            }
        }
    }
}

Kết quả

Mảng ban đầu:
9 2 7
4 5 1
8 3 6

Mảng sau khi sắp xếp từng hàng:
2 7 9
1 4 5
3 6 8

Lưu ý

  • Code trên sắp xếp từng hàng độc lập (row-wise)
  • Để sắp xếp toàn bộ mảng như một dãy phẳng, cần phẳng hóa (flatten) mảng trước
  • Dùng GetLength(0) cho số hàng, GetLength(1) cho số cột