快速排序

int n;
int a[109];

void Sort(int left,int right){
    if(left>=right)return;

    int tmp=a[left];
    int l=left,r=right;
    while(l!=r){
        while(l!=r&&a[r]>=tmp)r--;
        while(l!=r&&a[l]<=tmp)l++;
        swap(a[l],a[r]);
    }

    a[left]=a[l];
    a[l]=tmp;
    Sort(left,l-1);
    Sort(l+1,right);
}

int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    Sort(1,n);
    for(int i=1;i<=n;i++)
        printf("%d ",a[i]);
    return 0;
}

你可能感兴趣的:(快速排序)