Selection Sort là một thuật toán sắp xếp tìm giá trị nhỏ nhất trong mảng cho mỗi lần lặp của vòng lặp. Sau đó, giá trị nhỏ nhất này được hoán đổi với phần tử mảng hiện tại. Quy trình này được thực hiện cho đến khi mảng được sắp xếp.
Một chương trình thể hiện sự sắp xếp lựa chọn trong C # được đưa ra như sau.
Ví dụ
using System; public class Example { static void Main(string[] args) { int[] arr = new int[10] { 56, 1, 99, 67, 89, 23, 44, 12, 78, 34 }; int n = 10; Console.WriteLine("Selection sort"); Console.Write("Initial array is: "); for (int i = 0; i < n; i++) { Console.Write(arr[i] + " "); } int temp, smallest; for (int i = 0; i < n - 1; i++) { smallest = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[smallest]) { smallest = j; } } temp = arr[smallest]; arr[smallest] = arr[i]; arr[i] = temp; } Console.WriteLine(); Console.Write("Sorted array is: "); for (int i = 0; i < n; i++) { Console.Write(arr[i] + " "); } } }
Đầu ra
Kết quả của chương trình trên như sau.
Selection sort Initial array is: 56 1 99 67 89 23 44 12 78 34 Sorted array is: 1 12 23 34 44 56 67 78 89 99
Bây giờ, chúng ta hãy hiểu chương trình trên.
Đầu tiên mảng được khởi tạo và giá trị của nó được in bằng vòng lặp for. Điều này có thể được nhìn thấy trong đoạn mã sau.
int[] arr = new int[10] { 56, 1, 99, 67, 89, 23, 44, 12, 78, 34 }; int n = 10; Console.WriteLine("Selection sort"); Console.Write("Initial array is: "); for (int i = 0; i < n; i++) { Console.Write(arr[i] + " "); }
Vòng lặp for lồng nhau được sử dụng cho quá trình sắp xếp thực tế. Trong mỗi lần vượt qua của vòng lặp for bên ngoài, phần tử nhỏ nhất trong mảng được tìm thấy và thay thế bằng phần tử hiện tại. Quá trình này tiếp tục cho đến khi mảng được sắp xếp. Bạn có thể thấy điều này trong đoạn mã sau.
for (int i = 0; i < n - 1; i++) { smallest = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[smallest]) { smallest = j; } } temp = arr[smallest]; arr[smallest] = arr[i]; arr[i] = temp; }
Cuối cùng mảng đã sắp xếp được hiển thị. Bạn có thể thấy điều này trong đoạn mã sau.
Console.Write("Sorted array is: "); for (int i = 0; i < n; i++) { Console.Write(arr[i] + " "); }