简单选择排序
不需要一直做两两交换元素值,而是交换下标。在一轮比较结束时才交换元素值。
算法实现一:通过tmp来代替待选择排序的元素,依次与数组元素比较,交换下标值。
voidSimpleSelectSort(int *num ,int length)
{
int i,j;
for(i=0;i<length-1;i++)
{
tmp = i;
for(j=i+1;j<length;j++)
{
if(num[tmp]>num[j])
tmp= j;
}
if(tmp != i)
swap(&num[tmp],&num[i]);
}
}
执行结果:
6 3 8 5 71 0 4 2 最初数组元素
0 3 8 5 71 6 4 2 第一轮
0 1 8 5 73 6 4 2 第二轮
0 1 2 5 73 6 4 8 第三轮
0 1 2 3 75 6 4 8 第四轮
0 1 2 3 45 6 7 8 第五轮
0 1 2 3 45 6 7 8 (多余)
0 1 2 3 45 6 7 8 (多余)
0 1 2 3 45 6 7 8 (多余)
根据执行结果也需要做优化。加标志位,类同于冒泡法。