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

两种排序的区别主要在交换的方式上

相同点: 每一轮都把最大或最小的元素筛选出来放在相应的位置上

不同点: 对于每一轮, 比如第一轮

要把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)

但正常情况下,由于交换次数更少,选择排序更快一点

你可能感兴趣的:(冒泡排序与选择排序的区别)