氣泡排序與選擇排序

2021-10-04 06:52:15 字數 1198 閱讀 9711

氣泡排序與選擇排序

一. 氣泡排序

使用for迴圈,實現排序,每一次迴圈都是找到當前的最大值,相鄰的兩個單位進行比較,將最大值排到後置位,經過這樣多次的迴圈,達到排序的效果。

假設乙個陣列中有五個單元[25,38,49,37,15],使用氣泡排序的方式實現排序([15,25,37,38,49])。原理為:

1. 第一次迴圈,25與38作比較,25<38,則順序不變;接著38與49做比較,仍然不變;再49與37比較。49>37,則改變順序;最後49與15比較;49>15,則改變順序。此時順序為[25,38,37,15,49];

2. 第二次迴圈:與第一次迴圈一樣,不同的是第一次迴圈後的最後乙個值49不用參與比較,因為它已經是目前陣列中的最大值。323

3. 後續迴圈與前面一樣,總迴圈次數為(陣列單位元個數-1)。

**如下圖所示:

二. 選擇排序

首先定義起始位置預設為最小值所在位置,從起始位置的下乙個位置開始,與後面所有的位置進行一次比較,如果後置位有比起始位置小的值,則儲存它的索引值,迴圈結束後,通過索引值找到最小的那個值,與起始位置交換數值,經過多次迴圈,完成排序。

仍然假設乙個陣列中有五個單元[25,38,49,37,15],使用氣泡排序的方式實現排序([15,25,37,38,49])。原理為:

1. 第一次迴圈,25與38作比較,25<38,無操作;接著25與49做比較,25<49,仍然無操作;再25與37比較,25<37,仍然無操作;最後25與15比較,25>15,儲存15的索引下標值4,迴圈結束後,找到索引下標值4所儲存的單元15與初始位置進行交換,此時順序[15,38,49,37,15];

2. 第二次迴圈:與第一次迴圈一樣,不同的是第一次迴圈後的第乙個值15不用參與比較,因為它已經是目前陣列中的最小值。

3. 後續迴圈與前面一樣,總迴圈次數為(陣列單位元個數-1)。

**如下圖所示:

選擇排序與氣泡排序相比,選擇排序中如果發生大小順序需要改變的情況,只會操作索引值,等到迴圈結束後進行一次資料交換;而氣泡排序中,只要發生大小順序需要改變的情況,就要執行一次。可以看出,氣泡排序執行資料交換的操作比較頻繁,執行次數過多,執行效率就會變低。

排序 氣泡排序與選擇排序

最近複習大學學過的演算法,這裡做個筆記。排序,我們學過 這裡需要了解什麼是時間複雜度,什麼是空間複雜度。簡單而言,時間複雜度指執行的次數,空間複雜度指消耗的記憶體。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序 如從大到小 首字母從z到a 錯誤就把他們交換過來。走訪元素的工作是重複地...

選擇排序與氣泡排序

今早心血來潮,又想看看氣泡排序.於是乎度娘一番,找到了度娘給我的這篇文章,前面的文字描述還是簡單易懂的,可惜給出的 示範有些文不對題.於是乎又wiki一番.發現上文給出的 形似選擇排序,於是總結如下 我們假設有乙個陣列 624159 對應的索引也就是 0 5,如果我想描述第二個位置,也就是數字2的位...

選擇排序與氣泡排序

選擇排序 static void sort1 int arr var temp arr i arr i arr min arr min temp 氣泡排序 static void sort2 int arr static void main string args sort1 arr foreach...