演算法和資料結構 排序 線性時間排序

2022-05-03 07:24:10 字數 936 閱讀 3505

計數排序

#include #include #include #include #define min -65536 

using namespace std;

int * create_array (int *, int, int);

void print_array (int *, int);

int * count_sort (int *, int *, int *, int, int);

int main (void)

int * create_array (int * array, int num, int max)

void print_array (int *array, int num) }

int * count_sort (int *array, int *b_array, int *c_array, int k, int num)

delete c_array;

return b_array;

}

基數排序

radix-sort(a,d)

桶排序簡單來說,就是把資料分組,放在乙個個的桶中,然後對每個桶裡面的在進行排序。

例如要對大小為[1..1000]範圍內的n個整數a[1..n]排序。可以把桶設為大小為10的範圍,具體而言,設集合b[1]儲存[1..10]的整數,集合b[2]儲存(10..20]的整數,……集合b[i]儲存( (i-1)*10, i*10]的整數,i = 1,2,..100。總共有100個桶。然後對a[1..n]從頭到尾掃瞄一遍,把每個a[i]放入對應的桶b[j]中。

然後再對這100個桶中每個桶裡的數字排序,這時可用冒泡,選擇,乃至快排,一般來說任何排序法都可以。

最後依次輸出每個桶裡面的數字,且每個桶中的數字從小到大輸出,這樣就得到所有數字排好序的乙個序列了。

演算法和資料結構 排序 快速排序

交換位置 交換順序表l中子表的記錄,使樞軸記錄到位,並返回其所在位置 此時在它之前 後 的記錄均不大 小 於它。int partition sqlist l,int low,int high return low 返回樞軸所在位置 對順序表l中的子串行l r low.high 作快速排序 void ...

c 演算法和資料結構 快速排序演算法

問題描述 快速排序演算法 描述 快速排序演算法 類名 quicksort public class quicksort while a i pivot i right 從左向右尋找大於支點元素 do while a j pivot j 0 從右向左尋找小於支點元素 if i j break else...

資料結構與演算法簡記 排序演算法 2 線性排序

桶排序 將要排序的資料分到幾個有序的桶裡,每個桶裡的資料再單獨進行排序 桶內使用歸併排序保證穩定性 再把每個桶裡的資料按照順序依次取出 計數排序 獲取資料項大小範圍,設定 範圍大小 1 個桶,n個桶只代表0 n 1個數字,分別對值為每個桶代表的數字的資料項計數,放入對應桶,再對桶順序求和放入桶,最後...