排序總結 氣泡排序及優化

2021-09-25 14:48:02 字數 561 閱讀 5636

基於交換的排序演算法。從第乙個元素開始,依次與相鄰的元素進行比較,如果大小順序錯誤,就將他們交換。每一趟交換後可以確保乙個最大數(最小數)已經到最終的位置,比如:第一趟比較結束後,最後乙個數一定是最大數(從小到大排序)

public

static

void

bubblesort

(int

arr)}}

}

思想:當某一趟排序過程中沒有發現一次元素的交換,則證明此時序列已經有序了,不用再進行多餘比較。

**實現:

if

(arr.length<=1)

else}if

(!flag)}}

}

分析:

穩定性:當出現相鄰元素相等時不進行交換,穩定

時間複雜度:每趟排序只能使得乙個元素有序,每一趟都要遍歷陣列元素,所以是o(n^2)

空間複雜度:沒有開闢新的空間,僅僅是幾個變數,所以o(1)

排序 氣泡排序及優化

在每一輪迴圈中,依次比較相鄰的元素。如果是 從大到小排序,則每次將兩個元素中較大的乙個元素往後交換 如果是從小到大排序,則每次將兩個元素中較小的乙個元素往前交換。時間複雜度o n 2 空間複雜度o 1 根據原始版本的排序過程,觀察圖2 的示意圖。可以發現 當 i 7時,已經得出結果,i 8 的迴圈過...

氣泡排序及優化

氣泡排序的基本思路是 每次將相鄰兩個數比較,將小的調到前頭 本例按照從小到大排序 按此規律如果有n個數,則要進行n 1趟比較。在第1趟比較中要進行n 1次兩兩比較,在第 j 趟比較中要進行 n j 次兩兩比較。實現如下 include define n 10 int main for i 0 i n...

氣泡排序及優化

只考慮演算法的實現 public static void version1 int array 如果陣列的某一部分本身就是有序的,能顯著減少迴圈的趟數 public static void version2 int array if flag break 分析 我們假設在進行某趟排序時已經有序了,以...