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