Java 資料結構與演算法系列之氣泡排序

孔乙己學習成長錄發表於2019-02-25

一、前言

相信大部分同學都已經學過資料結構與演算法這門課了,並且我們可能都會發現一個現象就是我們所學過的資料結構與演算法類的書籍基本都是使用 C 語言來寫的,好像沒見過使用 Java 寫的資料結構與演算法。

帶著這個好奇心,我去查了下資料,國內基本找不到使用 Java 寫的資料結構與演算法書籍,有一本書叫《Java 資料結構與演算法》,這本書的程式碼是使用 Java 實現的,不過這本書是國內的學者翻譯國外的書籍寫出來的,個人感覺這本書對於初學者來說,還是比較難理解的。

氣泡排序一種執行效率很低的排序演算法,然而雖然排序效率低,確實排序入門很重的演算法,因為氣泡排序的思路是最簡單最容易理解的排序演算法了。

二、氣泡排序

1、定義: 氣泡排序是一種通過兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止的交換排序。

2、實現思想: 通過比較兩兩相鄰記錄的關鍵字,將第一個記錄的關鍵字和第二個記錄的關鍵字進行比較,如果後面的比前面的小則交換,然後比較第二個和第三個,依次類推。比完一個迴圈,最大的那個已經放到了最後的位置,這樣就可以對前面N-1個數再迴圈比較。

下面以一群身高不等的學生為例,如下圖所示:

  • 未排序的學生

    Java 資料結構與演算法系列之氣泡排序

  • 已排序的學生

Java 資料結構與演算法系列之氣泡排序

  • 氣泡排序第一輪實現過程

Java 資料結構與演算法系列之氣泡排序

三、氣泡排序的 Java 程式碼實現

1、氣泡排序實現演算法:

BubbleSort.java

package BubbleSort;

/**
 *
 * 氣泡排序實現演算法
 *
 */
public class BubbleSort {

    public void bubble(Integer[] data){

        for(int i=0;i<data.length;i++){
            for(int j=0;j<data.length-1-i;j++){

                //如果後一個數小於前一個數,則兩個數互相交換位置
                if(data[j]>data[j+1]){
                    int tmp=data[j];
                    data[j]=data[j+1];
                    data[j+1]=tmp;
                }
            }
        }
    }
}

複製程式碼

2、氣泡排序測試:

Test.java

package BubbleSort;

import java.util.Arrays;

/**
 *
 * 測試氣泡排序
 *
 */
public class Test {

    public static void main(String[] args) {

        Integer[] list={149,138,165,197,176,113,127,114,110};

        //氣泡排序
        BubbleSort bs = new BubbleSort();
        bs.bubble(list);

        System.out.println("排序前的結果為:" + Arrays.toString(list));
        System.out.print("排序後的結果為:");

        for(int i=0;i<list.length;i++){
            System.out.print(list[i]+" ");
        }
    }
}

複製程式碼

2、測試結果:

Java 資料結構與演算法系列之氣泡排序

掃描二維碼關注微信公眾號,瞭解更多

Java 資料結構與演算法系列之氣泡排序

相關文章