Dưới đây là một chương trình C sử dụng thuật toán sắp xếp chọn (Selection Sort) để sắp xếp một mảng số nguyên theo thứ tự tăng dần. Thuật toán sắp xếp chọn là một thuật toán sắp xếp đơn giản, hoạt động bằng cách lặp qua mảng, tìm kiếm phần tử nhỏ nhất và đổi chỗ nó với phần tử ở vị trí đầu tiên của mảng, sau đó lặp lại quy trình tương tự với phần còn lại của mảng:
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, min_idx, temp;
// Di chuyển ranh giới của mảng đã sắp xếp và chưa sắp xếp
for (i = 0; i < n-1; i++) {
// Tìm phần tử nhỏ nhất trong mảng chưa sắp xếp
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Đổi chỗ phần tử nhỏ nhất với phần tử đầu tiên
temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
printf("Mang truoc khi sap xep: \n");
for (i=0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
selectionSort(arr, n);
printf("Mang sau khi sap xep: \n");
for (i=0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
Trong chương trình này:
- Hàm
selectionSort
nhận vào mảngarr
và kích thước của mảngn
, sau đó sắp xếp các phần tử của mảng theo thứ tự tăng dần. - Trong hàm
main
, một mảng số nguyênarr
được khai báo và khởi tạo. Sau đó, kích thước của mảng được tính toán và mảng được in ra trước và sau khi sắp xếp. - Hàm
selectionSort
sử dụng hai vòng lặpfor
: vòng lặp ngoài để di chuyển ranh giới của mảng đã sắp xếp và mảng chưa sắp xếp, và vòng lặp trong để tìm phần tử nhỏ nhất trong mảng chưa sắp xếp. - Khi phần tử nhỏ nhất được tìm thấy, nó được đổi chỗ với phần tử đầu tiên của mảng chưa sắp xếp (phần tử ở vị trí
i
).
Chương trình này minh họa cách sắp xếp một mảng số nguyên theo thứ tự tăng dần bằng thuật toán sắp xếp chọn, một kỹ thuật cơ bản trong lập trình và thuật toán.
Comments