选择排序问题:
刚开始做的时候理解错误,大概用了插空排序的思想,这里不进行展示,等到插孔排序时直接说明。
void select(int *arr,const int len)//选择排序
{
int tmp;
int dmin;
for(int i=0;i<len;++i)
{
dmin = i;
for(int j=i;j<len;++j)
{
if(arr[j]<arr[dmin])
{
dmin = j;
}
}
tmp = arr[i];
arr[i] = arr[dmin];
arr[dmin] = tmp;
}
}
定义一个中间变量在交换的时候使用,定义一个变量存储最小值的下表以便交换时使用。假设排序五个数字,第一次在五个数中找出最小值,将下标存储在dmin中,然后将第一个数字的值和最小值交换,第一个数字有序,待排序数字变为剩下四个,接下来在四个数中找出当前最小值,与当前待排序数列第一个数进行交换,以此类推,上述代码即为实现过程。