Sắp xếp mảng một chiều theo thứ tự tăng dần sử dụng phương thức instance (non-static) với thuật toán sắp xếp chọn (selection sort).
Ví dụ
using System;
namespace Demo
{
public class MyApplication
{
public static void Main(string[] args)
{
int[] list = { 87, 45, 56, 22, 84, 65 };
Console.WriteLine("Mảng chưa sắp xếp:");
foreach (int i in list)
Console.Write(i + " ");
MyApplication m = new MyApplication();
m.SortFunc(list);
}
// Phương thức instance (non-static)
public void SortFunc(int[] arr)
{
int temp = 0;
Console.WriteLine("\nMảng đã sắp xếp:");
for (int i = 0; i < arr.Length; i++)
{
for (int j = i + 1; j < arr.Length; j++)
{
if (arr[i] >= arr[j])
{
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
Console.Write(arr[i] + " ");
}
}
}
}
Kết quả
Mảng chưa sắp xếp: 87 45 56 22 84 65 Mảng đã sắp xếp: 22 45 56 65 84 87
Giải thích thuật toán
Đây là biến thể của Selection Sort:
- Vòng lặp ngoài
iduyệt từ 0 đến n-1 - Vòng lặp trong
jso sánharr[i]với tất cả phần tử sau nó - Nếu tìm thấy phần tử nhỏ hơn, hoán đổi ngay lập tức
- Sau vòng lặp trong,
arr[i]là nhỏ nhất trong đoạn còn lại
Độ phức tạp
- Thời gian: O(n²) - so sánh n(n-1)/2 lần
- Không gian: O(1) - in-place
- Không ổn định (unstable)
Lưu ý: Trong thực tế nên dùng Array.Sort() (QuickSort/Introsort) hiệu quả O(n log n).