选择排序的思想很单纯,将数组分为有序区和无序区,每次从无序区中选择一个最大或者最小的元素,放在有序区,直至无序区元素个数为0,此时,数组排序完成。
版本一:
void EX_SortSelect(int a[], int n)
{
for (int j = 0; j < n; ++j) {
int minDir = j;
for (int i = j + 1; i < n; ++i) {
if (a[i] < a[minDir]) {
minDir = i;
}
}
if (j != minDir) {
myexchange(a, minDir, j);
}
}
return;
}
使用minDir记录最小值的位置,最后交换第j个元素与最小值。选择排序的时间复杂度为O(n^2),空间复杂度为O(1).不知是否可以优化