1. 程式人生 > >選擇排序與冒泡排序區別與比較

選擇排序與冒泡排序區別與比較

The swap 時間復雜度 weixin 位置 篩選 可能 當前 article

https://blog.csdn.net/weixin_38277423/article/details/70304120

區別主要在交換的方式上

每一輪都把最大或最小的元素篩選出來放在相應的位置上 這是相同的

但是
對於每一輪
比如第一輪
要把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)


但通常,選擇排序更快一點

冒泡排序是每一次都可能要交換
而選擇排序是在比較時記下a[i]的位置 最後來交換


所以他們的交換過程是不一樣的 而查找的過程是一樣的

選擇排序與冒泡排序區別與比較