java之氣泡排序

2021-07-11 13:57:58 字數 1723 閱讀 6539

1 . 什麼是氣泡排序?

網上查了點資料,也沒有找到什麼有用的概念,大致的意思都是 相鄰的兩個數兩兩做比較。根據相應的規則(比較大的往後放或比較小的往後放)放置兩數的位置:

規則:大的數往後靠

比較前: 2,1

比較後: 1,2

2 . 實戰

假設有這樣乙個陣列

int arr =
氣泡排序是這樣排的:

規則:小的往後靠

拿第乙個數開始與其後面的做比較。

第一次比較:

2<5

true 所以 2 和 5 的位置變換

現在 arr是這樣的

int arr =

2<1

false 所以 2 和 1 的位置不變

int arr =

由於剛才的位置未放生變化,那就拿1與其後面的數繼續比較

1<4

true 所以 1 和 4 的位置變換

現在 arr是這樣的

int arr =

1<3

true 所以 1 和 3 的位置變換

現在 arr是這樣的

int arr =

1<6

true 所以 1 和 6 的位置變換

現在 arr是這樣的

int arr =

一共是比較了5次。

這樣第1次比較就完了,最終將最小值1確定到了最後1位,不需要再做比較。

接著進行第二次比較:

與剛才類似:依然是拿第乙個數「5」與其後的數做比較。由於數字1已確定為最小,所以不用比較。這樣就只需要比較4次。

比完後是這樣的:

int arr =
依次類推:第3次比較比3次,結果是這樣的

int arr =
接著就是這樣的:

第4次比2次  int arr =

第5次比1次 int arr =

陣列 arr 的長度是6.

一共是比了5次,而每次比較中兩兩之比的次數又是遞減的。

因此可以得出以下圖示:

外迴圈內迴圈

第1次比較

比了5次

第2次比較

比了4次

第3次比較

比了3次

第4次比較

比了2次

第5次比較

比了1次

3 . **

這氣泡排序是不是就這樣出來了?

就拿剛剛的陣列為例子:

首先: 一共需要比較多少次:

for(int i=0;i

length-1;i++){}

一次比較裡面兩兩相比需要多少次:

for(int j =0;j

length-1-i;j++){}

如果arr[j]上的值小於arr[j+1]上的值就變換位置

if(arr[j]

[j+1])

最終氣泡排序的**為:

for(int i=0;ilength-1;i++)               

}

}

補張圖:

結束,收工。

java排序之氣泡排序

假設一籃球隊,成一佇列排列在籃球場上,每個人的身高都不相同,這樣的話就會成下面這種 現在呢,要對他們以身高進行排列讓他們成下面這種情況 採用氣泡排序的方式歷程如下 熊佇列的最左邊第一位 簡稱左一 起,讓他與最左邊第二位 左二 進行比較,如果左一的身高高於左二,那麼讓左一與左二調換位置 接下來對比左二...

Java之氣泡排序

氣泡排序,從字面上理解,冒泡的話,可以想象魚在水裡吐泡泡,越接近水面的泡泡越大,越遠離水面的泡泡越小,那麼氣泡排序也就是乙個種從小到大的排序。氣泡排序的原理 比較相鄰的兩個數,將值大的交換值右端 每次都比較相鄰的兩個數,在第一輪之後,最大的值就到了最右端,那麼第二輪就可以少一次比較,因為在第一輪最大...

Java之氣泡排序

直接上傳氣泡排序 public class sort bubblesort array for object obj array public static void bubblesort int array 時間複雜度 平均情況o n 2 最好情況o n 最壞情況o n 2 空間複雜度 o 1 穩...