黑马程序员技术交流社区

标题: 选择排序和改进的选择排序 [打印本页]

作者: 后知后觉4778    时间: 2015-12-14 21:47
标题: 选择排序和改进的选择排序
今天上了的时候老师讲了选择排序,其中有简单的选择排序和改进后的,其中改进后的不是每次发现比较大的值就交换,而是更新最大值的下标,然后每一趟只交换依次,有可能不交换,这样效率会很好
  1. //选择排序算法
  2. void selectSort(int array[],int length)
  3. {
  4.     int i,j,temp;//定义用于交换的变量temp
  5.     for(i=0;i<length-1;i++)//比较length-1趟,外循环控制趟数
  6.         for(j=i+1;j<length;j++)//内循环第i个数依次与后面的数比较
  7.             if(array[j]>array[i])//若大于,则交换,这样排序结束后由大到小排列
  8.             {
  9.                 temp = array[i];//交换数据
  10.                 array[i] = array[j];
  11.                 array[j] = temp;
  12.             }
  13. }
  14. //改进选择排序算法
  15. void selectSort2(int array[],int length)
  16. {
  17.     int i,j,k,temp; //定义用于交换的变量temp
  18.     for(i=0;i<length-1;i++)
  19.     {
  20.         k = i;//记录当前乱序的最大值的下标
  21.         for(j=i+1;j<length;j++)
  22.             if(array[j]>array[i])
  23.                 k = j;//发现数据比最大值大,更新下标
  24.         if(i!=k) // 若i!=k,说明假定的最大值很真实的最大值下标不一样,交换,若一样就不用交换了
  25.         {
  26.             temp = array[i];
  27.             array[i] = array[k];
  28.             array[k] = temp;
  29.         }
  30.     }
  31. }
复制代码



作者: littp    时间: 2015-12-14 21:54
数据量 极大的时候才会有用吧。。。。
作者: 后知后觉4778    时间: 2015-12-14 22:01
对,数据量小的时候差距不大




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2