摘要:
作為一名Java開發工程師,手頭如果不會幾個常見的排序算法,怎么可能經過筆試題這一關呢。據我所知,許多大型的公司的筆試題都有排序題,那我們先從最簡單的排序:冒泡排序開始,以后幾篇博客將繼續更新幾種深層次的排序。
冒泡排序的原理:他的基本原理就是和相鄰的元素值進行比較(這里特指和數組比較),如果滿足條件就交換元素值,把較小的元素和較大的元素交換,這樣小的元素就像小氣泡一樣從底部上升到頂部,大的元素就像大氣泡一樣從頂部下沉到底部。
1.適宜人群:有一定Java SE基礎的同學,明白Java的數據類型,數組的定義、初始化以及常用數組的方法,還有Java的循環操作。
2.前期准備:最好有一個開發工具比如說:eclipse或者myeclipse都可以,當然你使用DOS系統進行編譯運行都可以,只不過改bug會麻煩一點。
3.算法實現:
public class BubbleSort{ public static void main(String[] args){ //首先創建一個無序的數組。 int[] array = {100,120,530,1,2,48,26};//int[] array和int array[]都可以,但是推薦使用前者 //創建冒泡排序類的對象 BubbleSort arraySort = new BubbleSort(); //調用排序方法將數組排序 arraySort.sort(array); } public void sort(int[] array){ for(int i= 1;i<array.length;i++) { //開始比較相鄰元素的值,大元素下沉 for(int j=0;j<array.length-i;j++){ if(array[j]>array[j+1]){ //滿足條件就交換兩個元素的值 int temp = array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } showArray(array); } //顯示數組中的所有元素 public void showArray(int[] array){ //這里使用的一種不常見的foreach循環,不習慣這種寫法的可以用for循環 /* for(int i=0;i<array.length;i++) { System.out.print(array[i]+" "); } */ for(int i:array) { System.out.print(i+" "); } } }
4.冒泡排序的優缺點:
優點:比較簡單,空間復雜度較低,是穩定的。優點:
缺點:時間復雜度太高,效率不好。
5.后記:冒泡排序是排序算法的第一課,也是個人認為最容易入手的一個排序算法,后續我將為大家介紹更多實用但更復雜的排序算法。