提交记录 29641
| 提交时间 |
评测时间 |
| 2026-08-07 20:59:47 |
2026-08-07 21:00:05 |
#include <algorithm>
#include <stdint.h>
static void insertion_sort(uint32_t *a, int l, int r) {
for (int i = l + 1; i < r; i++) {
uint32_t key = a[i];
int j = i - 1;
while (j >= l && a[j] > key) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = key;
}
}
static void msd_radix_sort(uint32_t *a, int l, int r, int bit) {
if (r - l <= 32) {
insertion_sort(a, l, r);
return;
}
if (bit < 0) return;
int i = l, j = r - 1;
while (i <= j) {
while (i <= j && ((a[i] >> bit) & 1U) == 0) i++;
while (i <= j && ((a[j] >> bit) & 1U) == 1) j--;
if (i < j) {
uint32_t tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
j--;
}
}
msd_radix_sort(a, l, i, bit - 1);
msd_radix_sort(a, i, r, bit - 1);
}
void sort(unsigned *a, int n) {
if (n <= 1) return;
msd_radix_sort((uint32_t*)a, 0, n, 31);
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 13.538 s | 512 MB + 8 KB | Accepted | Score: 100 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-08-08 15:55:41 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠