提交记录 5731


用户 题目 状态 得分 用时 内存 语言 代码长度
iMMIQ 1001a. 测测你的排序2 Compile Error 0 0 ns 0 KB C++ 1.17 KB
提交时间 评测时间
2018-09-02 00:13:54 2020-08-01 00:22:04
#include <algorithm>

void swap(int &a, int &b) {
    int tmp = a;
    a = b;
    b = tmp;
}

int fun(int *a, int l, int r) {
    int mid = (l + r) >> 1;
    if(a[l] > a[mid]) {
        swap(a[l], a[mid]);
    }
    if(a[l] > a[r]) {
        swap(a[l], a[r]);
    }
    if(a[mid] > a[r]) {
        swap(a[mid], a[r]);
    }
    swap(a[mid], a[r - 1]);
    return a[r - 1];
}

void insertionsort(int *a, int n) {
    int j, p;
    int tmp;
    for(p = 1; p < n; p++) {
        tmp = a[p];
        for(j = p; j > 0 && a[j - 1] > tmp; j--) {
            a[j] = a[j - 1];
        }
        a[j] = tmp;
    }
}

void quicksort(int *a, int l, int r) {
    int i, j;
    int p;
    if(l + 3 <= r) {
        p = fun(a, l, r);
        i = l; j = r - 1;
        for(;;) {
            while(a[++i] < p) {}
            while(a[--j] > p) {}
            if(i < j) {
                swap(a[i], a[j]);
            }
            else {
                break;
            }
        }
            swap(a[i], a[r - 1]);
            quicksort(a, l, i - 1);
            quicksort(a, i + 1, r);
    }
    else {
        insertionsort(a + l, r - l + 1);
    }
}

void sort(int *a, int n) {
	quicksort(a, 0, n - 1);
}

CompilationN/AN/ACompile ErrorScore: N/A


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