一、基數排序
穩定排序
按位排序:從低位(個位)到高位,取序列中元素相應位數字計數排序
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 基數排序法是屬於穩定性的排序,基數...