提交记录 125797


用户 题目 状态 得分 用时 内存 语言 代码长度
abc1763613206 1001a. 测测你的排序2 Accepted 100 514.4 us 48 KB C++ 884 B
提交时间 评测时间
2026-10-10 18:00:50 2026-10-10 18:00:52
#include <algorithm>

void quickSort(unsigned *a, int left, int right) {
    if (left >= right) {
        return; // 递归终止条件
    }

    // 取最左边的元素作为基准(pivot)
    unsigned pivot = a[left];
    int i = left;
    int j = right;

    while (i < j) {
        // 从右向左扫描,找第一个小于 pivot 的数
        while (i < j && a[j] >= pivot) {
            j--;
        }
        // 找到后,把它填到左边的“坑”里
        if (i < j) {
            a[i] = a[j];
            i++;
        }

        // 从左向右扫描,找第一个大于 pivot 的数
        while (i < j && a[i] <= pivot) {
            i++;
        }
        // 找到后,把它填到右边的“坑”里
        if (i < j) {
            a[j] = a[i];
            j--;
        }
    }
    
    // 把基准值填入最后的“坑”中,此时 i == j
    a[i] = pivot;

    // 递归对左右两个子区间进行排序
    quickSort(a, left, i - 1);
    quickSort(a, i + 1, right);
}

void sort(unsigned *a, int n) {
    if (n <= 1) return;
    quickSort(a, 0, n - 1);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1514.4 us48 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2026-10-13 13:43:24 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠