zoukankan      html  css  js  c++  java
  • 一个费力不讨好的选择排序

    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])  //交换两个数
          }
        }
    
    


  • 相关阅读:
    深度优先和广度优先
    ajax<转>
    display:inline-block后会有间隙
    css样式多了个分号
    回答
    return false作用
    824. Goat Latin
    7. Reverse Integer
    48. Rotate Image
    9. Palindrome Number
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386257.html
Copyright © 2011-2022 走看看