氣泡排序,演算法如其名,我們可以把要排序的每乙個元素想象成乙個泡泡,陣列或者集合相當於裝這些泡泡的大水缸,那小的泡泡比較輕,會慢慢冒上來,大的泡泡比較重,就會沉下去(當然泡泡都是浮在水面上的 ,你就當是大的泡泡太胖了,水都浮不起它~)
其實我們上體育課排成一列的時候,就採用的是氣泡排序的原理,相鄰兩個同學進行比較,高的往後站,矮的往前移,第一輪比較完之後,個子最高的就排在了最後面,我們在下一輪比較的時候就不考慮他了。然後繼續下一輪的比較,以此類推,直到排好序為止。
原理圖:
**示例:
package string;
public class bubblesortdemo ;
system.out.println("排序前:");
printarray(arr);
bubblesort(arr);
system.out.println("排序後:");
printarray(arr);
} // 氣泡排序
private static void bubblesort(int arr)
}} }
private static void printarray(int arr) else
} }}
執行結果:
排序前:
[24,69,80,57,13]
排序後:
[13,24,57,69,80]
如果我們拿到的資料本來就是乙個已經排好序的陣列,或者說在某一次排序完成後,陣列已經排好序,那我們就沒有必要繼續排序了。所以我們可以這樣做,初始化乙個標記位,在每一輪排序時把這個標記位賦值為0,在進入內迴圈排序過程中,如果元素沒有進行了交換操作,說明陣列已經排好序,這時跳出迴圈,完成排序。
**示例:
package string;
public class bubblesortdemo ;
system.out.println("排序前:");
printarray(arr);
bubblesort(arr);
system.out.println("排序後:");
printarray(arr);
} // 氣泡排序
private static void bubblesort(int arr)
}system.out.print("第" + (x+1) + "次排序後:");
printarray(arr);
if (0 == flag)
} system.out.println("第" + count + "次發現已經排好序,則停止排序");
} private static void printarray(int arr) else
} }}
執行結果:
排序前:
[24,69,80,57,13,15,66,88,86]
第1次排序後:[24,69,57,13,15,66,80,86,88]
第2次排序後:[24,57,13,15,66,69,80,86,88]
第3次排序後:[24,13,15,57,66,69,80,86,88]
第4次排序後:[13,15,24,57,66,69,80,86,88]
第5次排序後:[13,15,24,57,66,69,80,86,88]
第5次發現已經排好序,則停止排序
排序後:
[13,15,24,57,66,69,80,86,88]
java 排序演算法之氣泡排序
氣泡排序是一種最基礎也是最簡單的排序演算法,它是一種穩定排序演算法,其平均時間複雜度為o n2 on2 空間複雜度為o 1 o1 是一種原地排序演算法。氣泡排序的思想其實很簡單,就是從最後乙個元素開始,依次與其前面的元素作比較,如果位置錯誤就交換位置,否則不採取操作,一直到第乙個元素,此時第乙個元素...
Java排序演算法之氣泡排序
package demosort 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。public class bubblesort int temp 0...
Java排序演算法之氣泡排序
1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。public cl...