“冒泡排序法”可以將一個無序的數組按照從小到大的順序或者是從大到小的順序進行排序,是一種較為常見的排序算法,因為數據從小到大或者從大到小地到數列頭或者數列末的過程稱為“冒泡”。對於冒泡排序我覺得最重要的兩點就是:(1)需要重新排序的次數,即循環的次數,這個是根據數組的序列的大小來定的,比如數組的大小為n的話,需要循環的次數就為(n - 1)次;(2)另外一個就是每次循環需要進行數據之間比較的次數,每次排序后可以確定出最大或者最小的那個數據,下次循環時就不用再進行比較了,所以每次進行比較的次數是(n - i);
對於一個數組無序的情況,無論是從大到小排序還是從小到大冒泡,假如是一個n個數據的數組,那么第一個數據無需跟自己進行大小比較了,那么需要進行比較的是跟余下的n - 1個數據,所以需要重新進行排序的循環次數是n - 1次,在每次循環的過程中需要進行的比較次數的確定也是一個關鍵,在第一次循環的過程可以確定(以從小到大為例)最大的那個數那么在下一次的循環中就不用再進行比較了。
下面這個實例是對數組進行從小到大排序:
1 package ren.arrayListSortedTest; 2 3 import java.util.Scanner; 4 5 public class ArraySortedTest { 6 //排序 7 public static void sort(int [] unSortedArray){ 8 for(int i=1;i<unSortedArray.length;i++){ 9 for(int j=0;j<unSortedArray.length-i;j++){ 10 if(unSortedArray[j]>unSortedArray[j+1]){ 11 int temp = unSortedArray[j]; 12 unSortedArray[j]=unSortedArray[j+1]; 13 unSortedArray[j+1]=temp; 14 } 15 } 16 } 17 18 } 19 //打印(已排序好) 20 public static void print(int [] unPrintedArray){ 21 for(int i=0;i<unPrintedArray.length;i++){ 22 System.out.print(unPrintedArray[i]+","); 23 } 24 } 25 public static void main(String[] args){ 26 Scanner sc = new Scanner(System.in); 27 //第一個鍵盤輸入指定數組開辟的大小 28 int [] unSortedArray = new int[sc.nextInt()]; 29 for(int i=0;i<unSortedArray.length;i++){ 30 //鍵盤輸入為指定數組的內容 31 unSortedArray[i]=sc.nextInt(); 32 } 33 ArraySortedTest.sort(unSortedArray); 34 ArraySortedTest.print(unSortedArray); 35 System.out.println("排序執行結束.."); 36 } 37 }
執行結果:
通過鍵盤輸入5確定要開辟的數組的容量是5個數據的數組,然后再指定每個元素的大小是多少,這里的原始的數組是[34,23,11,65,24],排序后結果為[11,23,24,34,65]。