选择排序它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素;
上代码:
void SelectSort(int* a, int len)
{
int begin = 0, end = len - 1;//控制循环边界
while (begin < end)
{
int mini = begin, maxi = end;//假设,最小值是 begin 的位置,最大值是 end 的位置
for (int i = begin; i <= end ; i++)
{
if (a[i] < a[mini])
{
mini=i;
}
if(a[i]>a[maxi])
{
maxi = i;
}
}
Swap(&a[begin], &a[mini]);小的往左边换
//如果begin跟maxi重叠,需要修正一下maxi的位置
if (begin == maxi)
{
maxi = mini;
}
Swap(&a[maxi], &a[end]);//大的往右边换
++begin;
--end;
}
}