一:實作思想:
基本思想:在要排序的一組數中,對目前還未排好序的範圍内的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就将它們互換。
二:實作代碼:
1 package bulubulu;
2
3 public class Maopao {
4 private static int [] a={12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
5 static int temp=0;//一個臨時存放點
6 public static void main(String[] args) {
7 for (int i = 0; i < a.length; i++) {
8 for (int j = 0; j < a.length; j++) {
9 if(a[j]>a[i]){//相鄰的兩個數依次進行比較,如果先改變正序或反序,可以改變大小于
10 temp=a[j];
11 a[j]=a[i];//在三行進行一個值的移動替換
12 a[i]=temp;
13 }
14 }
15 }
16 for (int i = 0; i < a.length; i++) {
17 System.out.println(a[i]);
18 }
19 }
20 }
冒泡排序的優點:每進行一趟排序,就會少比較一次,因為每進行一趟排序都會找出一個較大值。如上例:第一趟比較之後,排在最後的一個數一定是最大的一個數,第二趟排序的時候,隻需要比較除了最後一個數以外的其他的數,同樣也能找出一個最大的數排在參與第二趟比較的數後面,第三趟比較的時候,隻需要比較除了最後兩個數以外的其他的數,以此類推……也就是說,沒進行一趟比較,每一趟少比較一次,一定程度上減少了算法的量;
缺點:效率不高 (如果一個數組有n個數,那麼排序完成後需要比較n*(n-1)/2次);
歡迎大家一起說出自己的想法。