选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置;
然后,再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
//选择排序
void SelectionSort(int *a, int len)
{
int i, j;
int min;
for (i = 0; i < len - 1; i++) //循环执行次数len-1
{
min = i; //第一个为最小元素
for (j = i + 1 ; j < len; j++) //从i+1开始比较最小元素
{
if (a[min] > a[j])
min = j;
}
//最小元素是本身,不交换
if (a[min] != a[i])
mySwap(a, min, i);
}
}
9 8 7 6 5 4 3 2 1 0
0 8 7 6 5 4 3 2 1 9
***************************************
0 1 7 6 5 4 3 2 8 9
***************************************
0 1 2 6 5 4 3 7 8 9
***************************************
0 1 2 3 5 4 6 7 8 9
***************************************
0 1 2 3 4 5 6 7 8 9
***************************************
0 1 2 3 4 5 6 7 8 9
***************************************
0 1 2 3 4 5 6 7 8 9
***************************************
0 1 2 3 4 5 6 7 8 9
***************************************
0 1 2 3 4 5 6 7 8 9
***************************************
0 1 2 3 4 5 6 7 8 9