一个费力不讨好的选择排序详解编程语言

void choosefun(float array[],int m) 
{ 
    int i,j; 
    float n; 
    for(i=0;i<m-1;i++) 
    { 
        for(j=i+1;j<m;j++) 
        { 
            if(array[i]>array[j]) 
            { 
                n=array[i]; 
                array[i]=array[j]; 
                array[j]=n; 
            } 
        } 
    } 
     
 
}

以上是我写的选择排序,性能十分之差,与经典的选择排序对比,我这个如果在最不好的情况下,每次都需要移动元素。

 
    int min,tmp,i,j; 
    for(i=0;i<len-1;i++){ 
      min = i;             //在本趟选择过程中,我们要将最小的元素放在a[i]的位置上 
 
      for(j=i+1;j<len;j++) /×××××××××××××××××××××××××××××××××××××××××××××××××××××××× 
        if(a[min]>a[j])     ×在剩下的len-i个元素里选择一个最小,然后用min记住其下标 
         min = j;           ××××××××××××××××××××××××××××××××××××××××××××××××××××××××/ 
       
       /× 如果a[i]本身就已经是最小的元素,则不要交换,这样可以提高一点算法的效率×/ 
      if(min != i){ 
        swap(a[min],a[i])  //交换两个数 
      } 
    } 
 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/17714.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论