Thuật toán Selection Sort sắp xếp mảng bằng cách liên tục tìm phần tử nhỏ nhất từ phần chưa sắp xếp và đặt nó ở đầu. Trong mỗi lần lặp của selection sort, phần tử nhỏ nhất từ mảng con chưa sắp xếp được chọn và chuyển đến mảng con đã sắp xếp.
Ví dụ mã C++
#include <iostream>
#include <string.h>
using namespace std;
#define MAX_LEN 50
void selectionSort(char arr[][50], int n){
int i, j, mIndex;
// Di chuyển ranh giới mảng con chưa sắp xếp từng cái một
char minStr[50];
for (i = 0; i < n-1; i++){
// Xác định phần tử nhỏ nhất trong mảng chưa sắp xếp
int mIndex = i;
strcpy(minStr, arr[i]);
for (j = i + 1; j < n; j++){
// Kiểm tra minStr có lớn hơn arr[j] không
if (strcmp(minStr, arr[j]) > 0){
// Làm arr[j] thành minStr và cập nhật min_idx
strcpy(minStr, arr[j]);
mIndex = j;
}
}
// Hoán đổi phần tử nhỏ nhất với phần tử đầu tiên
if (mIndex != i){
char temp[50];
strcpy(temp, arr[i]); // hoán đổi item[pos] và item[i]
strcpy(arr[i], arr[mIndex]);
strcpy(arr[mIndex], temp);
}
}
}
int main(){
char arr[][50] = {"Tom", "Boyaka", "Matt", "Luke"};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
cout<<"Chuỗi cho trước:: Tom, Boyaka, Matt, Luke\n";
selectionSort(arr, n);
cout << "\nSắp xếp Selection Sort::\n";
for (i = 0; i < n; i++)
cout << i << ": " << arr[i] << endl;
return 0;
}
Chương trình C++ trên ban đầu chọn phần tử nhỏ nhất trong mảng và hoán đổi với phần tử đầu tiên. Tiếp theo, hoán đổi phần tử nhỏ thứ hai với phần tử thứ hai, v.v. Do đó, với mỗi lượt, phần tử nhỏ nhất được chọn và đặt vào vị trí đúng cho đến khi toàn bộ mảng được sắp xếp. Cuối cùng, phương pháp selection sort sắp xếp chuỗi cho trước theo thứ tự tăng dần như sau:
Đầu ra
Chuỗi cho trước:: Tom, Boyaka, Matt, Luke Selection Sorted:: Boyaka Luke Matt Tom