简述冒泡排序与选择排序的区别...
答案: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趟
由于选择排序在每次比较中都让数列排序更为优化,也就是说有效利用了每一趟的比较的结果,所以多数情况下优于选择,但如果数字比较少的话用选择程序更易读,也不容易写错。
选择排序:每次都要遍历全部元素,选择其中最小的(或最大的)放到第一位
冒泡排序:比较相邻的两个数,大的(或者小的)放后面
由于冒泡是一边比较一边调整顺序,所以数列会越来越接近排序完成状态。
例子:
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)
但通常,选择排序更快一点
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯