每次从数据中选出一个最大值或最小值放在序列的起始位置,直到全部待排序的数据元素排序完
比较次数:比较(n-1)* n / 2次
交换次数:最好时,无需交换;最坏时,交换n-1次;
C语言实现
void selectsort(int arr[], int n)
{
int i, j, min;
for(i = 0; i < n; i++) {
min = i;
for(j = i + 1; j < n; j++) {
if(arr[j] < arr[min]) {
min = j;
}
}
if(min != i) {
arr[i] = arr[i] ^ arr[min];
arr[min] = arr[i] ^ arr[min];
arr[i] = arr[i] ^ arr[min];
}
}
}