[b]基本概念[/b]:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。
[b]實現思路[/b]:用二重迴圈實現,外迴圈變數設為i,內迴圈變數設為j。假如有10個數需要進行排序,則外迴圈重複9次,內迴圈依次重複9,8,...,1次。每次進行比較的兩個元素都是與內迴圈j有關的,它們可以分別用a[j]和a[j+1]標識,i的值依次為1,2,...,9,對於每乙個i,j的值依次為1,2,...10-i
[b]效能分析[/b]:若記錄序列的初始狀態為"正序",則氣泡排序過程只需進行一趟排序,在排序過程中只需進行n-1次比較,且不移動記錄;反之,若記錄序列的初始狀態為"逆序",則需進行n(n-1)/2次比較和記錄移動。因此氣泡排序總的時間複雜度為o(n*n)。
最基本的氣泡排序:
[b]具體**[/b]:
public class bubblesorttest
}//列印出每趟排序的結果,只是為了顯示過程,如果陣列是正序,一趟就排好了
system.out.print("第" + (i+1) + "趟排序:");
for(int k =0; k < a.length; k++)
system.out.println();}}
public static void main(string args) ;
bubblesort(a);}}
優化:設定乙個標誌,如果這一趟發生了交換,則為true,否則為
false。明顯如果有一趟沒有發生交換,說明排序已經完成。
[b]具體**2:[/b]
public class bubblesorttest
}if(!flag) break; //如果沒有發生交換,則退出迴圈
//列印出每趟排序的結果,只是為了顯示過程,如果陣列是正序,一趟就排好了
system.out.print("第" + (i+1) + "趟排序:");
for(int k =0; k < a.length; k++)
system.out.println();
} }
} public static void main(string args) ;
int b = ;
bubblesort(b);
} }
基礎演算法(三) 氣泡排序(Java)
建立乙個氣泡排序類,例項中處理的是int型資料,可以根據需要進行替換 package sortalgorithm created by promacanthus on 2017 6 12.public class bubblesort public void bubblesort int ints ...
java基礎 氣泡排序
package cn.com author ty createdate 2013 7 6 下午10 31 29 description 氣泡排序 內層 陣列從頭到尾兩兩比較,如果前小於後,則位置不變 如果前大於後則交換位置。外層 需要比較陣列長度 1次 public class bubblesort...
java 排序演算法 氣泡排序
氣泡排序 感覺和選擇排序有點像,每迴圈一次,就能得到迴圈佇列中最小的值,按照江湖規矩,輪武功排行,幾個人先選出來兩個進行比試,贏的和下乙個人接著比,每次都選出來贏的那個人,和下乙個人進行比較,最終選出來的就是武功最nb的那個,那麼他就是老大了,老 出來後,就按照這個辦法,在剩餘的兄弟裡面接著比武吧,...