选择排序法的优化

来源:互联网 发布:淘宝鱼塘是什么意思 编辑:程序博客网 时间:2024/04/30 20:59

百度百科给的代码

void select_sort(int*a,int n){register int i,j,min,t;for(i=0;i<n-1;i++){min=i;//查找最小值for(j=i+1;j<n;j++)if(a[min]>a[j])min=j;//交换if(min!=i){t=a[min];a[min]=a[i];a[i]=t;}}}


优化后:

void SelectSort(int r[],int n) //n为数组元素个数{      int i ,j , min ,max, tmp;      for (i=0 ;i <n/2;i++)    /*做不超过n/2趟选择排序,这样可以节约一半的时间*/{   min = i; max = i ;        for (j= i+1; j<= n-i-1; j++){              if (r[j] > r[max]){                   max = j ; continue ;   }                if (r[j]< r[min]) {                   min = j ;               }     }<span style="white-space:pre"></span>//先处理最小值tmp = r[i]; r[i] = r[min]; r[min] = tmp;<span style="white-space:pre"></span>//交换后最大值位置需要重新定位 if(i==max) max=min;tmp = r[n-i-1]; r[n-i-1] = r[max]; r[max] = tmp;}  }
运行结果



0 0
原创粉丝点击