基数排序
记得调B (雾
const int B = 16384;
void sort (vector <int>& vec) {
int n = vec.size();
vector <int> buf(n, 0);
int mx = *max_element(vec.begin(), vec.end());
for (int base = 0 ; (1ll << base) <= mx ; base += 14){
vector <int> cnt(B, 0);
for (auto v : vec) cnt[(v >> base) & (B - 1)] ++;
for (int i = 1 ; i < B ; i ++) cnt[i] = cnt[i - 1] + cnt[i];
for (int i = n - 1 ; i >= 0 ; i --)
buf[-- cnt[(vec[i] >> base) & (B - 1)]] = vec[i];
vec = buf;
}
}
posted on 2025-09-29 11:22 FurinaHateComma 阅读(4) 评论(0) 收藏 举报
浙公网安备 33010602011771号