氣泡排序與選擇排序的區別分析

2021-10-23 11:21:09 字數 2334 閱讀 7036

氣泡排序與選擇排序很類似,有些初學者不注意很容易將兩者混淆,因此想寫一篇部落格,詳解兩種排序演算法的區別。

第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...