排序算法之桶排序及Java實現

一、排序算法的分類

  1. 選擇排序(直接選擇排序堆排序
  2. 交換排序(冒泡排序快速排序
  3. 插入排序(直接插入排序希爾排序
  4. 歸併排序
  5. 桶式排序
  6. 基數排序

二、桶排序的原理

之前介紹的算法都是非線性時間比較類排序,而桶排序是一種線性時間非比較類的排序算法,它是常見排序算法中最快的一種,但是也同時非常耗費空間,是典型的空間換時間的排序算法。桶排序的原理是申請一個數組空間,遍歷待排序數組時,將待排序數組的值放在數組空間的索引位置上,例如待排序數組爲[4,2,3,4],新申請的數組空間爲a[4],則a[2]的值爲1,a[3]的值爲1,a[4]的值爲2,其他索引處的值爲0,這樣當遍歷a時,將數組中非0值的索引按數量打印出來,就得到了從小到大的序列。

三、桶排序的實現


public class BucketSort {
    public static void bucSort(int[] arr, int min, int max){
        int[] temp = new int[max-min+1];
        for(int i=0; i<arr.length; i++){
            temp[arr[i]-min]++;
        }

        for(int j=0; j<temp.length; j++){
            if(temp[j]!=0){
                for(int k=0; k<temp[j]; k++)
                System.out.print(j + min + " ");
            }
        }

    }
    public static void main(String args[]){
        int[] test = {2,3,5,4,3,2,-2};
        bucSort(test,-2,5);
    }

}

測試結果

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