1. 程式人生 > >演算法之0——簡化版桶排序

演算法之0——簡化版桶排序

看了《啊哈!演算法》一書,打算寫點讀書筆記,記錄一下。

先說說桶排序,先說說超級簡化版本的桶排序:

    /**
	 * 簡化桶排序,以簡單的整型為例,數值是多少,就在陣列下標相同(桶)的數加一;例如取到數13,那麼就a[13]++;
	 * 然後迴圈桶,輸出值大於0的角標(1輸出1次,2輸出2次)
	 */
	public static void Tong() {
		int a[] = { 1, 20, 9, 3, 8, 4, 72, 8, 16, 7, 8, 13, 24, 5, 20 };// 待排序的值
		int sort[] = new int[100];// 桶

		for (int i = 0; i < a.length; i++) {
			sort[a[i]]++;
		}

		// 輸出
		int num = 0;
		for (int j = 0; j < sort.length; j++) {
			num = sort[j];
			for (int k = 0; k < num; k++) {
				System.out.println(j);
			}
		}
	}

共有N個數,需要迴圈N次,時間複雜度為O(N);

但是簡化版桶排序,只能進行最簡單的數值處理,且非常浪費空間。