排序(二)非比較排序

2021-07-25 01:43:08 字數 421 閱讀 6820

七大排序那篇部落格講的排序都是比較排序,這篇部落格要寫的內容是不需要通過比較就可以排序。

1.計數排序

解題思路:開闢一塊陣列,範圍為最大數減去最小數,用這個數減去最小值的差,對應的下標來統計,剛開始都初始化為0,如果有就把新開闢中的值++,最後按順序遍歷新開闢的陣列,把值放到原陣列中,就可以打到排序的目的。

void countsort(int* a,size_t n)

{ int max=a[0];

int min=a[0];

for(size_t i=0;imax)

max=a[i];

if(a[i]

int getmaxdigit(int* a,size_t n)

{ int max=1;

int base=10;

for(size_t i=0;i

非比較排序

以下內容參考自 演算法導論 基於比較的排序演算法可以用一顆完全二叉樹 決策樹 來表示,節點表示每一次的比較過程,葉子節點表示最終的排序順序,葉子節點一共有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 放...

非比較排序 計數排序

計數排序 count sort 是乙個非基於比較的排序演算法,該演算法於1954年由 harold h.seward 提出。它的優勢在於在對一定範圍內的整數排序時,它的複雜度為 n k 其中k是整數的範圍 快於任何比較排序演算法。計數排序的思想類似於雜湊表中的直接定址法,在給定的一組序列中,先找出該...