鄰居好說話 之 氣泡排序

2021-08-02 16:54:24 字數 1202 閱讀 2911

氣泡排序的主要思想就是:每次比較兩個相鄰的元素,如果它們比較大小之後,左右的順序錯誤,就相互交換位置。

下面以從大到小排序為例,來講一下它的思路:

第一輪首先處理第1個數和第2個數,使這兩個數從大到小排列,然後在前次處理後的基礎上處理第2個數和第3個數使其從大到小排列,以此類推,直到處理完第n-1個和第n個數,這樣第一輪處理結束。

乙個迴圈結束之後,得到的序列中的最後乙個數,也就是第n個數必定是最小的數。

重複上面的步驟,進行第二輪的兩兩比較。一輪結束後,得到的第(n-1)個數就是列表中的第二小。

以此類推重複上面的步驟,直到第(n-1)輪之後,所有的數都排序好了。

下面舉個簡單的比較例子:

12,35,99,18,76

第一輪:

這一輪從左往右依次兩兩比較,進行四輪

35,12,99,18,76

35,99,12,18,76

35,99,18,12,76

35,99,18,76,12

這時候,12肯定就是最小的乙個數,因為它比其它比較過的數字都小

第二輪:

這一輪,只需要比較12之前的四個數字,進行三輪兩兩比較

99,35,18,76,12

99,35,18,76,12

99,35,76,18,12

第三輪:

這一輪只需要比較18,12之前的三個數字,進行兩輪兩兩比較

99,35,76,18,12

99,76,35,18,12

第四輪:

這一輪只需要比較35,18,12之前的兩個數字的大小即可。

99,76,35,18,12

這時候,所有的比較就進行完了,最終結果就是上面這個。

我們可以看到,假設有n個數字作比較,那麼大的迴圈輪數為(n-1)次,

而每一輪,進行兩兩比較的次數為 (n-已經排好序的i)次。

因此說,氣泡排序的核心演算法就是 巢狀迴圈

**如下:

public

class bubblesort ;

sort(a);

for (int i = 0; i < a.length; i++)

}public

static

void

sort(int a) }}

}}

鄰居好說話 氣泡排序

簡化版的桶排序不僅僅有上一節所遺留的問題,更要命的是 它非常浪費空間!例如需要排序數的範圍是0 2100000000之間,那你則需要申請2100000001個變數,也就是說要寫成int a 2100000001 因為我們需要用2100000001個 桶 來儲存0 2100000000之間每乙個數出現...

鄰居好說話 氣泡排序

氣泡排序的基本思想是 每次比較兩個相鄰的元素,如果它們的順序錯誤就把它們交換過來。如下 include intmain for i 1 i n i 輸出結果 printf d a i return0 現在分別有5個人的名字 和分數 huhu 5分 haha 3分 xixi 5分 hengheng 2...

鄰居好說話 氣泡排序

簡化版的桶排序不僅僅有上一節所遺留的問題,更要命的是 它非常浪費空間!例如需要排序數的範圍是0 2100000000之間,那你則需要申請 2100000001個變數,也就是說要寫成int a 2100000001 因為我們需要用2100000001個 桶 來儲存0 2100000000之間每乙個數出...