提交记录 29642


用户 题目 状态 得分 用时 内存 语言 代码长度
sdfsdf 1001c. 测测你的排序4 Accepted 100 12.151 s 522248 KB C++ 981 B
提交时间 评测时间
2026-08-07 21:00:26 2026-08-07 21:00:43
#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);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #112.151 s510 MB + 8 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2026-08-08 15:51:27 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠