Java之氣泡排序

2021-09-12 10:16:51 字數 2106 閱讀 8978

氣泡排序,從字面上理解,冒泡的話,可以想象魚在水裡吐泡泡,越接近水面的泡泡越大,越遠離水面的泡泡越小,那麼氣泡排序也就是乙個種從小到大的排序。 氣泡排序的原理:比較相鄰的兩個數,將值大的交換值右端

每次都比較相鄰的兩個數,在第一輪之後,最大的值就到了最右端,那麼第二輪就可以少一次比較,因為在第一輪最大的值已經在右端,所以第二輪比較,最右端的數就不參與比較,也就少了1次比較; 到了第三輪,由於經過了第一輪和第二輪的比較,最大的值和第二大的值,都位於最右邊,和右邊起的第二個位置,那麼第三輪就可以不用進行右邊第一和第二個數的比較,所以在三輪的比較次數就少了2次; 後面的一次類推,最後的效果就是從左往右,從小到大。

假如有乙個陣列int a =

++++++++++++第 1 輪比較+++++++

第 1 次交換    2<3    不交換位置   2,3,4,1,5

第 2 次交換    3<4    不交換位置   2,3,4,1,5

第 3 次交換   4>1      交換位置     2,3,1,4,5

第 4 次交換   4<5      不交換位置     2,3,1,4,5

++++++++++++第 2 輪比較+++++++

第 1 次交換   2<3    不交換位置    2,3,1,4,5

第 2 次交換    3>1     交換位置       2,1,3,4,5

第 3 次交換     3<4    不交換位置      2,1,3,4,5

由於第一輪比較已將最大值放置最右邊,所有不用進行第 4 個和第 5 個數比較

++++++++++++第 3 輪比較+++++++

第 1 次交換    2>1     交換位置   1,2,3,4,5

第 2 次交換   2<3    不交換位置    1,2,3,4,5

同上++++++++++++第 4 輪比較+++++++

第 1 次交換    1<2    不交換位置   1,2 ,3,4,5

同上++++++++++++比較結束+++++++

ok,到了這裡,氣泡排序完成了,由之前的2,3,4,1,5換成了1,2,3,4,5

我們進行了一共 4 輪的交換,如果把陣列的長度看做 n 那麼,我們一共需要進行 n-1 輪交換; 在每一輪我們都進行了不同次數的排序,同樣把把陣列長度看成是 n ,把輪數看成是 i ,那麼在每一輪中,我們一共需要進行 n-i 次交換位置

根據上面的規律,我們可以寫兩個for迴圈來說實現,乙個迴圈來實現輪數 n-1 的規律,另乙個迴圈來實現 n-m 的規律

定義乙個變數 i ,i用來控制迴圈論述,所以初始值為1,那麼每次迴圈都進行i++,且for迴圈條較為i《陣列長度,也就實現了 n-1 規律

1for(int i=1; i定義乙個變數 j ,用來控制每輪迴圈中的次數,那麼每次迴圈都進行 j++ ,且for迴圈條件為 j《陣列長度-i ,也就實現了n-1規律

for(int j=1;j因為陣列的標是從0開始的,所以我們在上面兩個for迴圈將 i 和 j 都定義成 0,那麼在交換for迴圈條件那麼相應的 -1 即可。

1 for(int i=0;i定義乙個中間變數用來存放臨時的交換值: 

if(a[j]>a[j+1])

1 public class maopao ;

5 int b = 0;

6 system.out.println("原始陣列");

7 for (int i : a)

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

17 }

18 }

19 system.out.println();

20 system.out.println("氣泡排序之後");

收藏

java排序之氣泡排序

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

java之氣泡排序

1 什麼是氣泡排序?網上查了點資料,也沒有找到什麼有用的概念,大致的意思都是 相鄰的兩個數兩兩做比較。根據相應的規則 比較大的往後放或比較小的往後放 放置兩數的位置 規則 大的數往後靠 比較前 2,1 比較後 1,2 2 實戰 假設有這樣乙個陣列 int arr 氣泡排序是這樣排的 規則 小的往後靠...

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