摘要:
作為一名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.后記:冒泡排序是排序算法的第一課,也是個人認為最容易入手的一個排序算法,后續我將為大家介紹更多實用但更復雜的排序算法。