在此對於桶排序做出兩種方法:
一.簡化版桶排序
**如下:
/*簡化版的桶排序*/
#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 這使得計數排序對於資料範圍很大的陣列,需要大量時間和記憶體。例如 計數排...