黑马程序员技术交流社区
标题:
选择排序和改进的选择排序
[打印本页]
作者:
后知后觉4778
时间:
2015-12-14 21:47
标题:
选择排序和改进的选择排序
今天上了的时候老师讲了选择排序,其中有简单的选择排序和改进后的,其中改进后的不是每次发现比较大的值就交换,而是更新最大值的下标,然后每一趟只交换依次,有可能不交换,这样效率会很好
//选择排序算法
void selectSort(int array[],int length)
{
int i,j,temp;//定义用于交换的变量temp
for(i=0;i<length-1;i++)//比较length-1趟,外循环控制趟数
for(j=i+1;j<length;j++)//内循环第i个数依次与后面的数比较
if(array[j]>array[i])//若大于,则交换,这样排序结束后由大到小排列
{
temp = array[i];//交换数据
array[i] = array[j];
array[j] = temp;
}
}
//改进选择排序算法
void selectSort2(int array[],int length)
{
int i,j,k,temp; //定义用于交换的变量temp
for(i=0;i<length-1;i++)
{
k = i;//记录当前乱序的最大值的下标
for(j=i+1;j<length;j++)
if(array[j]>array[i])
k = j;//发现数据比最大值大,更新下标
if(i!=k) // 若i!=k,说明假定的最大值很真实的最大值下标不一样,交换,若一样就不用交换了
{
temp = array[i];
array[i] = array[k];
array[k] = temp;
}
}
}
复制代码
作者:
littp
时间:
2015-12-14 21:54
数据量 极大的时候才会有用吧。。。。
作者:
后知后觉4778
时间:
2015-12-14 22:01
对,数据量小的时候差距不大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2