氣泡排序與選擇排序很類似,有些初學者不注意很容易將兩者混淆,因此想寫一篇部落格,詳解兩種排序演算法的區別。
第1輪排序
首先進行第1輪排序,黃色代表當前比較的元素,綠色代表已經歸位的元素。
(1)比較第1個和第2個元素,4>3,交換。
(2)比較第2個和第3個元素,1<3,不交換。
(3)比較第3個和第4個元素,5>1,交換。
(4)比較第4個和第5個元素,2>1,交換。
最後,我們可以看到 1 已經位於最頂部。需要四次比較才能把五個數比較完。
第2輪排序
第2輪排序的初始狀態是第一遍排序的最終狀態,即4,3,5,2,1。
(1)比較第乙個和第二個元素,3<4,不交換。
(2)比較第二個和第三個元素,5>3,交換。
(3)比較第三個和第四個元素,2<3,不交換。
第2輪排序,會讓 2 歸位,並且這一遍只用進行三次比較就可以了。
第3輪排序
第3輪排序的初始狀態是第二遍排序的最終狀態,即4,5,3,2,1。
(1)比較第乙個和第二個元素,5>4,交換。
(2)比較第二個和第三個元素,3<4,不交換。
第3輪排序,會讓 3 歸位,並且這一遍只用進行兩次比較就可以了。
然而我們可以看到這一次五個數已經全部完成了歸位,但是當我們採用普通的氣泡排序的時候,演算法仍然會繼續向下進行。
第4輪排序
第4輪排序的初始狀態是第三遍排序的最終狀態,即5,4,3,2,1。
這個時候就可以看出,排序實際上在第三遍已經完成了,但是演算法還是會繼續向下進行。
}}第1輪排序
1)找出陣列元素2到元素5中的最小值為1,對應元素3;
2)比較元素1和最小值,如果元素1>最小值,即3>1,交換元素1和元素3;
經過第1輪排序後,第1個位置確定下來。
第2輪排序
1)找出陣列元素3到元素5中的最小值為2,對應元素5;
2)比較元素2和最小值,如果元素2>最小值,即4>2,交換元素2和元素5;
經過第2輪排序後,第2個位置確定下來。
第3輪排序
1)找出陣列元素4到元素5中的最小值為4,對應元素5;
2)比較元素3和最小值,由於元素3《最小值,不交換;
經過第3輪排序後,第3個位置確定下來。
第4輪排序
1)找出最小值為4,對應元素5;
2)比較元素4和最小值,如果元素4>最小值,即5>4,交換元素4和元素5;
經過第4輪排序後,第4個位置確定下來,由於只剩元素5,因此第五個位置也確定下來,完成排序。
void
selectsort
(int a,
int length)
swap
(&a[min]
,&a[i]);
}}
演算法
平均時間複雜度
最好情況
最壞情況
空間複雜度
穩定性氣泡排序
o(n2)
o(n)
o(n2)
o(1)
穩定選擇排序
o(n2)
o(n2)
o(n2)
o(1)
不穩定3.1 執行時間小實驗
選擇排序與氣泡排序的區別
氣泡排序 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數 放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放...
選擇排序與氣泡排序的區別
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。氣泡排序 bubble sort 是一種計算解學領域的較簡單的排序演算法。它重複地...
選擇排序與氣泡排序區別與比較
每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。如果在 c 語言中去實現選擇排序,我們最常見的就是兩層迴圈的實現方式。從選擇排序的思想出發,我們都不難看出 n s圖如下 演算法如下 for i 0,n 2...