氣泡排序原理:
1、比較相鄰的兩個元素,如果前者大於後者則交換位置;
2、這樣對陣列第0個資料到n-1個資料進行遍歷比較一次後,最大的資料會移動到最後一位。
3、n=n-1,如果n=0則排序完成;
**實現
package zks;
public class bubblesort
}} }
}
package zks;
public class main ;
bubblesort.bubble(arr, arr.length);
for(int i = 0;i
輸出結果如下:
上面這個是最基本的氣泡排序方法,如果說陣列數量比較大並且有一部分是本來就有序的,那麼將會在此部分浪費時間。所有考慮到這種情況,可以事先設定乙個標識flag,如果此次循化下來發生了交換,則為true,否則說明排序已完成,為false。
**如下:
package zks;
public class bubblesort
}k--;//減小一次排序的尾邊界
} }}
結果如下:
在此優化的基礎上考慮到,如果有乙個包含500個數值的陣列,前100個是無序的,後400個全部是有序排列好的並且後面的400個數值的最低值都大於前100個的最高值。如果用第二種方法的話,雖然也是只會比較100次,但是每一次都會與後面400位相比較,而用下面的方法只需要與後面400位比較一次,便會記錄下這個標識然後設定尾邊界,以後的99次便不會與後面400相比較
再次優化後**如下:
package zks;
public class bubblesort }}
}}
結果如下:
此方法相比之前的兩種相對更友好一些;
C C 氣泡排序的實現以及優化
這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端 公升序或降序排列 就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名 氣泡排序 實質是從當前元素起,向後依次比較每一對相鄰元素,滿足條件就交換。對所有元素均重複以上步驟,直至最後乙個元素 寫 無非就是外迴圈表示排序的次數 內...
完整的氣泡排序實現以及原理
氣泡排序 比較次數的公式 n n 1 2 原理 相鄰元素兩兩比較,值較大者往後放,第一次比較完畢,最大值出現在了最大索引處。public class bubblesort system.out.println 氣泡排序前 for int i num 第一次比較 是為了防止陣列越界 num.lengt...
氣泡排序以及氣泡排序的優化
很早接觸過氣泡排序法,但一直沒有真正的理解,只是為了記住而學習,今天又重新看了一下,其實氣泡排序法第一次排序會把最大的冒到最上面,第二次會把次大的泡冒到最大的後面,一次類推 另外在排序的次數上會逐漸減少。看 void bubble sort int a,int n 其實還可以優化一下,當發現沒有進行...