兩種排序的區(qū)別主要在交換的方式上
相同點: 每一輪都把最大或最小的元素篩選出來放在相應(yīng)的位置上
不同點: 對于每一輪, 比如第一輪
要把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 表示交換)
總的來說,兩種排序比較的次數(shù)是相同的
但交換的次數(shù)寡喝,選擇排序是更少的
雖然兩者的時間復(fù)雜度都是 O(n^2)
但正常情況下,由于交換次數(shù)更少,選擇排序更快一點