標籤: 小白學演算法
基數排序的時間複雜度為o(
d∗2n
) ,d表示待排序數字的位數,2n是因為分配和收集都需要o(
n)的時間,空間複雜度為o(
n+m)
,m表示桶的數量。
假設我們要對十進位制的數進行排序,那麼需要10個桶表示0~9。首先從個位開始,把個位是0的數放進0號桶,個位是1的數放進1號桶……依次類推,直到把個位是9的數放進9號桶。把所有桶中的資料依次倒出來,再從十位開始,把十位是0的數放進0號桶……十位是1的數放進1號桶……依次類推,直到把十位是9的數放進9號桶。把所有桶中的資料依次倒出來,再從百位開始……直到最高位入桶再出桶,這時出桶後的資料就是已經排序完的資料了。
過程演示如下:
最上面一行表示待排序資料,藍色表示桶的編號,黃色表示出桶的資料,其餘表示入桶的結果。
class radixsort
//資料出桶
for (i=0; idelete bucket;
return a;
}int getdigit(int x, int m)//獲取數x的第m位數值
;//1000表示可以對0~9999的數排序
return (x/a[m]) % 10;}};
基數排序演算法
include stdafx.h include iostream include math.h using namespace std struct radixsort 建立迴圈鍊錶 radixsort creatlink else le ls ls new radixsort 為下乙個節點在堆記...
基數排序演算法
以下內容為程式 int quicksort int p,int n extern int insertsort int p,int n static int partition int p,int n,int m static int quick sort int p,int n 快速排序演算法在 ...
基數排序演算法
經典排序演算法 基數排序radix sort 原理類似桶排序,這裡總是需要10個桶,多次使用 首先以個位數的值進行裝桶,即個位數為1則放入1號桶,為9則放入9號桶,暫時忽視十位數 例如 待排序陣列 62,14,59,88,16 簡單點五個數字 分配10個桶,桶編號為0 9,以個位數數字為桶編號依次入...