错误票据 蓝桥杯 ACM 怎么会运行超时?

输出正确,时间开支太大了吗?


#include<stdio.h>
#include<string.h>
#include<stdlib.h>

inline void swap(int *a, int *b){
    int tmp;
    tmp = *a;
    *a = *b;
    *b = tmp;
}
inline int Partion(int *a, int left, int right){

    int i = left;
    int j = right + 1;

    int Ele = a[left];
    do{
        do i++; while (a[i] < Ele);
        do j--; while (a[j] > Ele);
        if (i < j) swap(&a[i], &a[j]);
    } while (i < j);

    swap(&a[left], &a[j]);
    return j;
}

inline void Qsort(int *a,int left,int right){
    int k;
    if (left < right){
        k = Partion(a, left, right);
        Qsort(a, left, k - 1);
        Qsort(a, k + 1, right);
    }
}
int main(){
    int n, i = 0, j = 0, tmp=0;
    int a[10000];
    char c;
    char str[20]="";
    int chong, duan;
    memset(a, -1, sizeof(a));

    scanf("%d", &n);
    getchar();

    while (n>0){
        c = getchar();
        if (c == 32){
            if (str[0] =='\0') continue;
            a[i++] = atoi(str);
            str[0] = '\0';
            j = 0;
            continue;
        }
        if (c == 10){
            n--;
            if (str[0] == '\0') continue;
            a[i++] = atoi(str);
            str[0] = '\0';
            j = 0;
            continue;
        }
        str[j] = c;
        str[j + 1] = '\0';
        j++;
    }



    Qsort(a,0,i);

    while (i > 0){
        tmp = a[i];
        if (a[i - 1] == tmp - 2)
            duan = tmp - 1;
        if (a[i - 1] == tmp)
            chong = tmp;
        i--;

    }
    printf("%d %d\n", duan,chong);

    return 0;
}


我当时选择的是桶排序,用空间去换时间,没有超时

排序算法本身没有问题,注意边界处理,超时有可能是进入死循环了