在工作中,可能經常需要對某個數組進行排序,這個時候,就該展示排序算法了。常見的排序算法很多,像選擇排序、冒泡排序、快速排序等等。今天,主要總結下冒泡排序,面試中,可能也會經常問到,筆試寫冒泡排序等。
假如有一個數組:{23,2,15,68,99,17,36,75};
冒泡排序的思想:
第1次比較:將第一個數和第二個數進行比較,如果第一個數字大於第二個數字,則進行位置交換;
第2次比較:將第二個數和第三個數進行比較,如果第二個數字大於第三個數字,則進行位置交換;
第3次比較:將第三個數和第四個數進行比較,如果第三個數字大於第四個數字,則進行位置交換;
一直這樣比較,直到第一次比較結束,這樣比較完之後,當前數組中最大的數就排到最後一位了;
第一次整體比較詳解過程如下:
原始數組:23 2 15 68 99 17 36 75
第一次小比較:23和2比較,23比2大,則交換;比較後:2 23 15 68 99 17 36 75 ;
第二次小比較:23和15比較,23比15大,則交換:比較後:2 15 23 68 99 17 36 75 ;
第三次小比較:23和68比較,23比68小,不交換:比較後:2 15 23 68 99 17 36 75 ;
第四次小比較:68和99比較,68比99小,不交換:比較後:2 15 23 68 99 17 36 75 ;
第五次小比較:99和17比較,99比17大,則交換:比較後:2 15 23 68 17 99 36 75 ;
第六次小比較:36和99比較,99比36大,則交換:比較後:2 15 23 68 17 36 99 75 ;
第七次小比較:99和75比較,99比75大,則交換:比較後:2 15 23 68 17 36 75 99 ;
第一次整體比較完之後,最大的數已經排在末尾,然後取第一個數字,再重複上面的步驟,依次進行比較,直到所有數字比較完成。
代碼實現如下:
public static void main(String[] args) {
int[] numbers = {23,2,15,68,99,17,36,75};
for(int i=0;i<numbers.length;i++){
for(int j=0;j<numbers.length-i-1;j++) {
if(numbers[j]>numbers[j+1]) {
int temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(numbers));
}
程序運行結果圖如下:
冒泡排序知識的總結完了,還有很多排序算法,以後的文章中再總結。感覺開發工作要學的知識挺多的,但是我們要分清楚主次。知識雖然枯燥,但是我們多看多寫,就會記得更加的深刻。我們應該不斷的奮鬥,成就美好的人生。