排序 基數排序(計數排序 桶排序)

2021-07-03 11:55:04 字數 1241 閱讀 3386

在此對於桶排序做出兩種方法:

一.簡化版桶排序

**如下:

/*簡化版的桶排序*/

#include int main()

scanf("%d",&n);//輸入乙個數n,表示接下來有n個數

for(i=1;i<=n;i++)//迴圈讀入n個數,並進行桶排序

for(i=0;i<=1000;i++) //依次判斷編號1000~0的桶

getchar();

} getchar();

return 0;

}

二.完整版桶排序基數排序(有msd和lsd)

現在先實現最簡單的基數排序,就是對數字只有從小到大排序,沒有類別之分。

基數排序的思想就是:先對個位數字進行排序,排序完成之後,統計成堆

接著對上面排好序的十位數字進行排序,排序完成之後,再進行對排好序的百位數字排序,依次類推

函式加測試**如下:

/*完整版桶排序*/

#include #include using namespace std;

#define radix 10

/** * 基樹排序(有msd和lsd)

* 現在先實現最簡單的基數排序,就是對數字只有從小到大排序,沒有類別之分

* 基數排序的思想就是:

* 先對個位數字進行排序,排序完成之後,統計成堆

* 接著對上面排好序的十位數字進行排序,排序完成之後,再進行對

* 排好序的百位數字排序,一次類推

*/void radixsort(int arr,int n)

lists[(temp/loc%10)].push_back(arr[i]);//數值相同的插入到等值鍊錶中

}int j = 0; //合併radix個鍊錶

for(i = 0;i < 10;i++)}}

}}void main()

; for(int i = 0;i < sizeof(arr)/sizeof(int);++i)

{ cout<

執行結果如下圖:

十分期待大家對於我的批評和建議~謝謝大家

桶排序 基數排序 計數排序

桶排序 1.原理 將需要排序的陣列分在有限的桶裡 然後對每個桶中的數分別排序 對每個桶的操作 1.別的排序演算法 2.以遞迴的方式繼續使用桶排序 2.過程 假設待排序的一組數統一的分布在乙個範圍中,並將這一範圍劃分成幾個子範圍,也就是桶 將待排序的一組數,分檔規入這些子桶,並將桶中的資料進行排序 將...

桶排序 基數排序 計數基數排序 Java

前面已經講述了很多排序演算法,但是他們的排序演算法都是基於兩個值之間的比較,通過決策樹的方法可以證明深度為d的二叉樹則最多有 一些好的排序演算法是可以達到時間複雜度是線性的,桶排序就是其中一種。比如有n個數,但是這些數的最大數不超過m。這個時候就可以定義乙個含有m個元素的陣列 初始值為0 然後遍歷n...

計數排序 桶排序和基數排序

當輸入的元素是 n 個 0 到 k 之間的整數時,它的執行時間是 n k 計數排序不是比較排序,排序的速度快於任何比較排序演算法。由於用來計數的陣列c的長度取決於待排序陣列中資料的範圍 等於待排序陣列的最大值與最小值的差加上1 這使得計數排序對於資料範圍很大的陣列,需要大量時間和記憶體。例如 計數排...