冒泡排序和选择排序的区别

冒泡排序和选择排序,在我看来,好象都是每一轮把最大或最小的元素筛选出来放在相应的位置上,真正的区别是什么,我看代码老是搞不清楚是哪种排序?

是这样的
区别主要在交换的方式上

每一轮都把最大或最小的元素筛选出来放在相应的位置上
这是相同的
但是
对于每一轮
比如第一轮
要把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)
但通常,选择排序更快一点

参考资料:http://hi.baidu.com/yukunlinykl/blog/item/56f3986e768fe5db81cb4a17.html

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答