选择排序:
假定最开始的位置是最小值并记录下标min,然后与后面所有的数据比较,如果有比min位置的值更小的数,那么更新min,结束后min的下标与开始时发生过改变,才进行交换到开始位置
虽然时间复杂度较高,但是数据交换次数比较少,因此实际的运行速度并不慢(数据交换比数据比较耗时)
时间复杂度:O(N^2)
不稳定的
代码:
void selection_sort(TYPE* arr,size_t len)
{
printf("%s:\n",__func__);
show(arr,LEN);
for(int i=0; i<len-1; i++)
{
int min = i;
for(int j=i+1; j<len; j++)
{
if(arr[j] < arr[min]) min = j;
}
if(i != min)
{
int temp = arr[j];
arr[j] = arr[min];
arr[min] = temp;
}
}
}