能帮忙优化一下吗?两个数据超时了。。。。
查看原帖
能帮忙优化一下吗?两个数据超时了。。。。
843638
saber_the_saber楼主2022/11/8 20:03
#include <stdio.h>
int getmid(int left,int right,int a[])
{
    int mid=(left+right)/2+1;
    if(a[mid]>a[right])
    return right;
    if(a[mid]<a[left])
    return left;
    
    return mid;
}
void quicksort(int left,int right,int a[])
{
    if(left>=right)
        return;
    int i=left,j=right;
    int number=getmid(i,j,a);
    int jizhun=a[number];
    int t;
    t=a[left];
    a[left]=a[number];
    a[number]=t;
    while(i!=j){
        while(j>i&&a[j]>=jizhun)
            j--;
        while(j>i&&a[i]<=jizhun)
            i++;
        if(j!=i){
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
    }
    t=a[left];
    a[left]=a[i];
    a[i]=t;
    quicksort(left,i-1,a);
    quicksort(i+1,right,a);
}
int main()
{
    int n;
    scanf("%d",&n);
    int k;
    int a[n+1];
    for(k=1;k<=n;k++){
        scanf("%d",&a[k]);
    }
    quicksort(1,n,a);
    for(k=1;k<=n;k++){
        printf("%d ",a[k]);
    }
    return 0;
    
}
2022/11/8 20:03
加载中...