提交记录 18073


用户 题目 状态 得分 用时 内存 语言 代码长度
liubf21 1001. 测测你的排序 Time Limit Exceeded 0 5 s 390636 KB C++ 772 B
提交时间 评测时间
2022-10-07 15:25:33 2022-10-07 15:25:41
#include <algorithm>
void quick_sort(unsigned *A,int x,int y) // 从x到y排序(左闭右开)
{
    if(y-x>1){
        int l=x+1,r=y-1;
        while(l<=r){ // 可以取等(考虑只有两个数的排序)
        // 双指针向中间扫描,扫描到不符合的数时停止,双指针均扫描到,直接互换
            while(!(A[l]>A[x]||l>r)){
                l++;
            }while(!(A[r]<A[x]||l>r)){
                r--;
            }if(l<r){
                // 交换A[l]和A[r]的值
                A[l]=A[r]+A[l];
                A[r]=A[l]-A[r];
                A[l]=A[l]-A[r];
            }
        }
        int m = l-1;
        // 将第一个数与中间的数互换 (此时l=r,数值一定大于x的)
        A[x] = A[x] + A[m];
        A[m] = A[x] - A[m];
        A[x] = A[x] - A[m];
        quick_sort(A, x, m);
        quick_sort(A, m + 1, y);
    }
}
void sort(unsigned *a, int n) {
	quick_sort(a, 0, n);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #15 s381 MB + 492 KBTime Limit ExceededScore: 0


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