java算法之一冒泡排序(交換排序)

最近重新把算法也同步整理一遍,雖然平時用的少,但至少是一種思想,對於編程的影響還是有的。

冒泡排序算是我大學以來唯一印象深刻且現在還記得的算法,原因因爲非常簡單卻不是經典。

一個存放着無序數字的數組,如何使之進行有規律的排序。於是冒泡算法就提供了兩個for循環嵌套(第一個位置和第二個位置的比較,如果大於就對換位置,否則就繼續第二個位置和第三個位置進行比較,以此類推,第一輪結束後,最大的數字就已經放置在數組的最後一個位置上了),從而解決了從小到大的排序問題(同理從大到下)。 代碼貼如下:

/*
* 冒泡排序
*/
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;
            }
        }
    }
}

}

這樣就實現了冒泡排序,不過這種效率不是最好的,時間複雜度是O(n²)。
改進效率請參考快速排序。

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