Ta cũng có thể cải tiến thuật toán trên để giảm bớt số lần hoán đổi hai vị trí phần tử
void selectionSort(int a[m], int n) {
//Mảng a[m] có độ dài n
for (int i = 0; i < n - 1; i++) {
int max = i;
for (int j = i + 1; j < n; j++)
if (a[max] > a[j])
max = j;
if (max != i) {
int temp = a[i];
a[i] = a[max];
a[max] = temp;
}
}
}
== Đánh giá ==
* Thuật toán ít phải đổi chỗ các phần tử nhất trong số các thuật toán sắp xếp(n lần hoán vị) nhưng có độ phức tạp so sánh là O(n<sup>2</sup>) (n<sup>2</sup>/2 phép so sánh).