非比較排序 桶排序

2022-09-23 11:30:12 字數 720 閱讀 8199

相對於計數排序,桶排序和計數排序的差別就在於處理相同資料的差別上。計數排序假設輸入資料都屬於乙個小區間內的整數,而桶排序則是假設輸入是由乙個隨時過程產生的,該過程將元素均勻分布在[0, 1)區間上。  

在桶排序的過程中有乙個非常重要的地方就是,投射的位置 =  current_data * number_array / maximum_array_scope , 如果出現多個數投射在相同的位置上,那麼這裡就和hash 處理衝突一樣,補充乙個鍊錶,並且在鍊錶中元素是有序的。

**:考慮到太大的問題,所以每一張都剪成了2張  

一共生成30個隨機資料,下一張圖是和這張圖相連的  

經過對映之後的情況是:  

最後只需要依次序輸出即可。  

#include

#include

#include

#include

#include

#define max 1000

#define n 30

using namespace std;

typedef list listint;

int main()

else

} for(int i = 0; i < n; i++)

cout << endl;

delete(listall);

return 0;

}

非比較排序

以下內容參考自 演算法導論 基於比較的排序演算法可以用一顆完全二叉樹 決策樹 來表示,節點表示每一次的比較過程,葉子節點表示最終的排序順序,葉子節點一共有n 個 n表示資料個數,一共有n 種排列方式 二叉樹的高度h就是比較的次數,由二叉樹的性質,葉子節點的個數不大於2 h,所以有 2 h n 2 h...

非比較排序

計數排序 n個輸入元素的每乙個都是在0到k之間的整數 k為某個整數 1.假設輸入陣列是a 1.n 還需要兩個陣列 b 1.n 存放排序的輸出,c 0.k 提供臨時儲存空間 2.c i 中存放等於 i 的元素的個數,i 0,1,k 3.通過相加計算確定有多少元素是小於等於i的 4.把每個元素a i 放...

C 演算法之桶排序 非比較排序之二

劃重點 求最值,初新組,正反填充陣列得 桶排序是計數排序的公升級版。它利用了函式的對映關係,高效與否的關鍵就在於這個對映函式的確定。其過程與計數排序一致,也是進行 求最值,初新組,正填充,反填充 的操作。不一樣的在於,桶排序需要遞迴呼叫來對桶內的陣列進行排序。步驟0 人為設定乙個bucketsize...