选择排序问题:
刚开始做的时候理解错误,大概用了插空排序的思想,这里不进行展示,等到插孔排序时直接说明。
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中,然后将第一个数字的值和最小值交换,第一个数字有序,待排序数字变为剩下四个,接下来在四个数中找出当前最小值,与当前待排序数列第一个数进行交换,以此类推,上述代码即为实现过程。
本文深入讲解了选择排序算法的实现原理及代码实现过程。通过定义中间变量和最小值下标,选择排序能在未排序的部分找到最小元素并将其放到已排序序列的末尾,最终完成整个数组的排序。

被折叠的 条评论
为什么被折叠?



