非比較排序2 基數排序

2021-08-20 16:00:03 字數 619 閱讀 6065

一、基數排序

穩定排序

按位排序:從低位(個位)到高位,取序列中元素相應位數字計數排序

c++**:

//供radixsort用的計數排序

void countsort1(vector& sequence, vectorvec_digit, int max_k=9);

void radixsort(vector& sequence, int n_digit)

sequence = sort_seq;

}

空間複雜度:k0為進製數,即**中的max_k+1

s(n) = θ(n+k0)  

時間複雜度:外層for迴圈次數 x 計數排序時間複雜度

由於基數排序中所用的計數排序max_k=9,所以其時間複雜度為θ(n+k0)=θ(n+10)

令k為位數,即**中的n_digit

t(n) = n_digit x θ(n+k0) = θ(k*n + k*k0) = θ(k*n)

擴充套件:這裡取位數的方式為十進位制,可以根據實際情況取其他進製以使得效果更好(k越小,計數排序的k0越大,即計數排序的時間複雜度越大) ;最大的進製數應小於等於lgn(以2為底)。            

非比較排序 計數排序 基數排序

利用雜湊的思想,直接定值法。開闢最大值到最小值範圍的陣列,把待排序陣列裡的資料取模後在新陣列對應的位置進行標記,新陣列裡存的值是引用計數,統計重複的個數,下標加上最小值為對應舊資料的大小。利用雜湊的思想,先對個位排序 個位有序後,在對十位排序 十位有序後再對更高位排序,把最大數的位數排完,整個序列就...

排序 基數排序

基數排序 radix sort 是屬於 分配式排序 distribution sort 基數排序法又稱 桶子法 bucket sort 或bin sort,顧名思義,它是透過鍵值的部份資訊,將要排序的元素分配至某些 桶 中,藉以達到排序的作用。排序思想 首先按照資料的最低位 個位 將資料分配到0 9...

排序 基數排序

1 基數排序 桶排序 介紹 1 基數排序 radix sort 屬於 分配式排序 distribution sort 又稱 桶子法 bucket sort 或bin sort,顧名思義,它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用 2 基數排序法是屬於穩定性的排序,基數...