黑马程序员技术交流社区
标题:
冒泡排序与选择排序的区别
[打印本页]
作者:
fangbuqianxing
时间:
2016-3-29 20:00
标题:
冒泡排序与选择排序的区别
冒泡排序是将相邻的两个数进行比较,将大数调换到后面,调换完成之后再一次与后边相邻的数进行比较再调换,最后把最大的数调换到最后的位置。在进行第二轮比较,比较前n-1个数,再把最大的数调换到最后,一次类推,直到循环到第一个数。比较完成之后从小到大排序。
选择排序是设定一个变量k存放最大值的下标,假设第一个数是最大值,与后边相邻的数一次进行比较,假如后边的数大于前边的数,则把大数的下标值赋值给k,当一轮比较完成之后,最大数是带k下标的数组元素,看最大值是否是第一个数,如果不是,把第一个数与最大数进行交换,第一个数变为最大数,紧接着进行第二轮比较,比较余下的数,以此类推比较完成之后,数值从大到小排列。
两者不同之处在于冒泡排序两两比较如果前边大于后边则马上调换,是一个大数往后调换的过程,选择排序只是记录最大值的下标,一轮比较完之后,如果最大值不是第一个值才进行调换位置,是一个大数往前调换的过程。
作者:
Zhangqi27
时间:
2016-3-31 00:35
没有代码啊
作者:
Sniper-L
时间:
2016-3-31 00:44
学到了
作者:
z276698840
时间:
2016-3-31 12:56
没代码结合难理解
作者:
风小筝
时间:
2016-4-1 09:27
加油加油加油
作者:
堕落天使
时间:
2016-4-1 12:19
如果加上一点代码,效果会更好的!加油!
作者:
x_starry
时间:
2016-4-5 21:50
学习了!
作者:
UKnowINeedYou
时间:
2016-4-7 16:19
冒泡排序:
int bubble(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
选择排序:
int chooseSort(int a[],int n)
{
int i,j,temp,k;
for(i=1;i<n;i++){
k = i;//k存放当前循环的层数
for(j=i+1;j<n;j++)
if(a[j]<a[k]){
k = j; //交换标号
temp = a[k];
a[k] = a[i];
a[i] = temp;
}
}
}
作者:
hy415161
时间:
2016-4-7 18:41
嗯嗯!谢谢总结!!!
作者:
毛小猪
时间:
2016-4-7 22:19
不错不错
作者:
zhaoshuai
时间:
2016-4-7 22:26
没什么两样
作者:
烛风小糊涂
时间:
2016-4-8 15:55
代码写起来都差不多,有点小区别,但是思路确是完全不同。
我很佩服能够想出这种排序的人,在计算机和人脑中取得了很好的平衡!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2