算法-排序-基数排序(对任意整数排序)
生活随笔
收集整理的這篇文章主要介紹了
算法-排序-基数排序(对任意整数排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基數排序
時間復雜度:Θ(d(n+k))
d:元素的位數,k元素中每位數的取值區間大小
非原址排序
1??特點該排序只能每次為基數為1位數進行排序
輔助類:KeyValuePair
鏈接地址
輔助排序 counting_sort_by_key
鏈接地址
2??以多位數 r 為基礎進行排序(r<=b,b為總位數),不在是一位一位的排序
時間復雜度Θ((b/r)(n+2^r))。
通常情況下,若b = O(lgn),取r≈lgn,則基數排序的運行時間為Θ(n)。
3??基數排序的詭異版本
基數排序的不在以10進制分割,而是以任意大于1的自然數(代碼中的range)分割。
參數 range 取值大于n時一定成功,小于n時不一定成功。有興趣的同學可以共同探討下。
時間復雜度Θ(log(range,max{ |array中元素|})(n+2range))
vector容器版本
void radix_sort(vector<int> &array,int digits) {vector<KeyValuePair> temp_array(array.size());for (int i = 0; i < array.size(); ++i) {temp_array[i].value = array[i];}for (int i = 0; i < digits; ++i) {for (int j = 0; j < array.size(); ++j){temp_array[j].key = (temp_array[j].value / (int) pow(10,i)) % 10;}counting_sort_by_key(temp_array);}for (int i = 0; i < array.size(); ++i) {array[i] = temp_array[i].value;} }總結
以上是生活随笔為你收集整理的算法-排序-基数排序(对任意整数排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 库克:未将乔布斯视为竞争对手,如果他还在
- 下一篇: 工具类—KeyValuePair