面試經常問冒泡排序,排序算法之冒泡排序總結

在工作中,可能經常需要對某個數組進行排序,這個時候,就該展示排序算法了。常見的排序算法很多,像選擇排序、冒泡排序、快速排序等等。今天,主要總結下冒泡排序,面試中,可能也會經常問到,筆試寫冒泡排序等。

        假如有一個數組:{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));    
    }

    程序運行結果圖如下:

   

   冒泡排序知識的總結完了,還有很多排序算法,以後的文章中再總結。感覺開發工作要學的知識挺多的,但是我們要分清楚主次。知識雖然枯燥,但是我們多看多寫,就會記得更加的深刻。我們應該不斷的奮鬥,成就美好的人生。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章