一个费力不讨好的选择排序

来源:互联网 发布:屏幕监视软件 编辑:程序博客网 时间:2024/04/28 15:01
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])  //交换两个数      }    }


0 0
原创粉丝点击