生活随笔
收集整理的這篇文章主要介紹了
详解基数排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:基數排序
void maximumGap(vector
<int>& nums
) {if(nums
.size() < 2) return 0;int exp
= 1;vector
<int> buf(nums
.size());int maxVal
= *max_element(nums
.begin(),nums
.end());while(maxVal
>= exp
) {vector
<int> cnt(10);for (int i
= 0; i
< nums
.size(); i
++) {int digit
= (nums
[i
] / exp
) % 10;cnt
[digit
]++;}for (int i
= 1; i
< 10; i
++) {cnt
[i
] += cnt
[i
- 1]; }for (int i
= nums
.size() - 1; i
>= 0; i
--) {int digit
= (nums
[i
] / exp
) % 10;buf
[cnt
[digit
] - 1] = nums
[i
];cnt
[digit
]--;}copy(buf
.begin(), buf
.end(), nums
.begin());exp
*= 10;}for(int i
= 0; i
< nums
.size(); i
++){cout
<< nums
[i
] << " ";}
2:計數排序
- hashArray,其中array中的數值表示了該下標在數組中出現的次數
- 0,就是沒有出現,1,出現了一次,2出現了兩次
總結
以上是生活随笔為你收集整理的详解基数排序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。