永发信息网

简述冒泡排序与选择排序的区别...

答案:2  悬赏:0  手机版
解决时间 2021-02-23 15:26
  • 提问者网友:我一贱你就笑
  • 2021-02-23 08:37
要求详细,且需要有举例说明,如果以代码说明的,以JAVA为准。感谢!
最佳答案
  • 五星知识达人网友:几近狂妄
  • 2021-02-23 08:57
不需要代码说明
选择排序:每次都要遍历全部元素,选择其中最小的(或最大的)放到第一位
冒泡排序:比较相邻的两个数,大的(或者小的)放后面

由于冒泡是一边比较一边调整顺序,所以数列会越来越接近排序完成状态。
例子:
5 3 1 6 4 2
从小到大:
选择:
1 3 5 6 4 2

1 2 5 6 4 3
1 2 3 6 4 5
1 2 3 4 6 5
1 2 3 4 5 6
可以看出经常回把较小的数放后面了,前面的比较结果对后面没有任何帮助

冒泡:
3 5 1 6 4 2
3 1 5 6 4 2
3 1 5 6 4 2
3 1 5 4 6 2
3 1 5 4 2 6
以上为第一趟冒泡,看起来很长,实际上比较次数跟选择排序例子里面一行的赐教次数相同,都是n
第二趟:134256
第三趟:132456
第四趟:123456
合起来排了5趟
由于选择排序在每次比较中都让数列排序更为优化,也就是说有效利用了每一趟的比较的结果,所以多数情况下优于选择,但如果数字比较少的话用选择程序更易读,也不容易写错。
全部回答
  • 1楼网友:我住北渡口
  • 2021-02-23 10:16
是这样的 区别主要在交换的方式上 每一轮都把最大或最小的元素筛选出来放在相应的位置上 这是相同的 但是 对于每一轮 比如第一轮 要把1~n 中最大的那个放到n这个位置 冒泡法每次比较和移动相邻的两项 而选择排序每次交换当前项和第n项 我把代码写出来你就懂了: 冒泡: for i:=1 to n-1 do if (a[i]>a[i+1]) then swap(i,i+1); 选择: for i:=1 to n-1 do if (a[i]>a[n]) then swap(i,n); (swap 表示交换) 总的来说,两种排序比较的次数是相同的 但交换的次数,选择排序是更少的 虽然两者的时间复杂度都是 o(n^2) 但通常,选择排序更快一点
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯