Selection Sort: tìm phần tử nhỏ nhất, đặt vào vị trí đầu. Tiếp tục với phần chưa sắp xếp. Ví dụ mảng {6,3,8,12,9}: nhỏ nhất 3 đặt đầu -> {3,6,8,12,9}. Tiếp tục tìm nhỏ nhất trong phần còn lại.
Các bước:
- Đặt phần tử đầu làm min.
- So sánh min với các phần tử tiếp theo, cập nhật min nếu nhỏ hơn.
- Đặt min vào vị trí đầu phần chưa sắp xếp.
- Lặp lại từ phần tử tiếp theo.
Ví dụ
#include <stdio.h>
int main() {
int arr[10]={6,12,0,18,11,99,55,45,34,2};
int n=10;
int i, j, position, swap;
for (i = 0; i < (n - 1); i++) {
position = i;
for (j = i + 1; j < n; j++) {
if (arr[position] > arr[j])
position = j;
}
if (position != i) {
swap = arr[i];
arr[i] = arr[position];
arr[position] = swap;
}
}
for (i = 0; i < n; i++)
printf("%d\t", arr[i]);
return 0;
}
Kết quả
0 2 6 11 12 18 34 45 55 99