公升序排列:從第乙個元素開始,對陣列中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在後面,一輪比較完畢,乙個最大的數沉底成為陣列中的最後乙個元素,一些較小的數如同氣泡一樣上浮乙個位置。
n個數,經過
n-1輪比較後完成排序。
**如下:
public class bubblesort {
private long a;
private int nelemts;
public void bubblesort(){
int out,in;
for(out=nelemts-1;out>1;out--){
for(in=0;in
此演算法的目的是將最小的元素放在陣列下標為0的位置,並將最大的元素放在陣列的最後,也就是下標為n-1的位置。
外層for迴圈的計數器out從陣列的最後開始,即out=n-1,每經過一次迴圈,out減去1。比out大的元素已經是排序好的元素。
內層for迴圈的計數器in從0開始,即in=0,每完成一次迴圈in加1,當in=out時結束內層for迴圈。在內層for迴圈中,陣列下標為in和in+1的兩個資料項進行比較,如果下標為in的資料項大於下標為in+1的資料項,則交換兩資料項。
效率問題:
陣列中有n個元素,第一塘排序進行n-1次比較,第二次排序進行n-2次比較,一次類推。公式表示為(n-1)+(n-2)+...+1
交換次數可能少於比較次數,在完全逆序的最壞情況下才和比較次數相同
所以比較和交換次數都與n的平方成正比。
無論何時,只要看到乙個迴圈巢狀在另乙個迴圈裡就可以懷疑執行時間為o(n2),
排序演算法 1 氣泡排序
氣泡排序是非常容易理解和實現,以從小到大排序舉例 設陣列長度為n。1 比較相鄰的前後二個資料,如果前面資料大於後面的資料,就將二個資料交換。2 這樣對陣列的第0個資料到n 1個資料進行一次遍歷後,最大的乙個資料就 沉 到陣列第n 1個位置。3 n n 1,如果n不為0就重複前面二步,否則排序完成。冒...
排序演算法1 氣泡排序
氣泡排序 public class bubblesort int arr 交換變數 int temp 判斷上一次是否進行了排序,若上次沒有進行排序,證明排序已經提前完成,可提前跳出迴圈,結束排序 boolean flag false for int i 0 i arr.length 1 i if f...
排序演算法1 氣泡排序
1.什麼是氣泡排序 氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他 們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交 換慢慢 浮 ...