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


  • 相关阅读:
    微信端支付
    flex布局
    最近的一些计划
    工作中遇到的一些小问题
    获取url参数
    localStorage中使用json
    倒计时函数(单个和多条)
    刚进入页面强制刷新
    [模板][倍增] ST算法 RMQ 区间中最大得值
    [思维]奇数码问题
  • 原文地址:https://www.cnblogs.com/JSD1207ZX/p/9386257.html
Copyright © 2011-2022 走看看