氣泡排序由淺入深詳細分析圖解
原理分析
排序結果:


詳細程式碼實現:

package july.star.bubble;
/**
* 氣泡排序
*  相鄰元素兩兩比較,大的往後放,第一次完畢後,最大值就出現在
* 最大索引處,同理,繼續,即可得到一個排序好的陣列
*
* 規律:
*  1、兩兩比較,大的往後放。
*  2、第一次比較完畢後,下一次比較的時候就會減少一個元素的比較
*  3、第一次比較,有0個元素不比
*        第二次比較,有1個元素不比    
*        第三次比較,有2個元素不比    
*        第四次比較,有3個元素不比    
*    .....
*  4、總共需要比較陣列的長度-1次
* @author MoXingJian
* @email [email protected]
* @date 2016年12月24日 下午3:44:30
* @version 1.0
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {21,69,90,55,12};
//輸出陣列
printArr(arr);
//詳細排序過程
detailSort(arr);
int[] arr2 = {23,59,34,88,2,99,68};
//最終版
endSort(arr2);
}
private static void endSort(int[] arr2) {
System.out.println();
System.out.println("原序列");
printArr(arr2);
//兩次for迴圈解決
for(int i = 0; i < arr2.length-1; i  ){
for(int j=0; j < arr2.length-1-i;j  ){
if(arr2[j] > arr2[j 1]){
int temp = arr2[j];
arr2[j] = arr2[j 1];
arr2[j 1] = temp;
}
}
}
System.out.println();
System.out.println("兩層迴圈排序");
printArr(arr2);
}
private static void detailSort(int[] arr) {
System.out.println();
System.out.println("第一次排序:");
//第一次排序
//arr.length-1 為了防止資料越界
//arr.length-1-0:為了減少比較的次數
for(int i=0; i < arr.length-1-0; i  ){
if(arr[i] > arr[i 1]){
int temp = arr[i];
arr[i] = arr[i 1];
arr[i 1] = temp;
}
}
printArr(arr);
System.out.println();
System.out.println("第二次排序:");
//第二次排序
for(int i=0; i < arr.length-1-1; i  ){
if(arr[i] > arr[i 1]){
int temp = arr[i];
arr[i] = arr[i 1];
arr[i 1] = temp;
}
}
printArr(arr);
System.out.println();
System.out.println("第三次排序:");
//第三次排序
for(int i=0; i < arr.length-1-2; i  ){
if(arr[i] > arr[i 1]){
int temp = arr[i];
arr[i] = arr[i 1];
arr[i 1] = temp;
}
}
printArr(arr);
System.out.println();
System.out.println("第四次排序:");
//第四次排序
for(int i=0; i < arr.length-1-3; i  ){
if(arr[i] > arr[i 1]){
int temp = arr[i];
arr[i] = arr[i 1];
arr[i 1] = temp;
}
}
printArr(arr);
}
//輸出陣列
private static void printArr(int[] arr) {
System.out.print("[");
for(int j = 0; j < arr.length; j  ){
if(j != arr.length-1){
System.out.print(arr[j]   ",");
}else{
System.out.print(arr[j]);
}
}
System.out.print("]");
}
}