直接选择排序
思路
1.在比较的元素中,找到最小的。
2.如果最小的是在0下标处,则无动作,否则,将最小的元素与0下标的元素交换位置。
3.按照1,2的步骤继续找到第二小的放在下标为1的地方…..一直循环到处理完整个数组。
以此为例:
数组a为:2,5,4,7,1,8,3,0,9,6
参考代码如下
///////////////////////////////////////直接选择排序
////时间复杂度 O(n^2) 不稳定
void ChooseSort(int a[],int size)
{
for (int i = 1;i<size;++i) ///从1开始循环
{
int min = i-1;//将i的前一个赋为最小值
for (int j = i;j<size;++j)///////找到未排序的元素里最小的
{
if (a[min] > a[j])
min = j;
}
if (min != i-1) //将最小的放进i-1的位置
swap(a[min],a[i-1]);
}
}