编辑代码

#include <stdio.h>
void quick_sort(int a[],int left,int right){
    if(left>=right){
        return;
    }
    int tmp=a[left],i=left,j=right;
    while(i<j){
        while(a[j]>tmp&&i<j){
            j--;
        }
        if(i<j){
            a[i++]=a[j];
        }
        while(a[i]<tmp&&i<j){
            i++;
        }
        if(i<j){
            a[j--]=a[i];
        }
    }
    a[i]=tmp;
    quick_sort(a,left,i-1);
    quick_sort(a,i+1,right);
}

int z[100];
void gb(int *a,int l,int r){
    if(l>=r)return;
    int mid=l+(r-l)/2;
    gb(a,l,mid);
    gb(a,mid+1,r);
    int i=l,j=mid+1,k=0;
    while(i<=mid&&j<=r){
        if(a[i]<a[j]){
            z[k++]=a[i++];
        }
        else{
            z[k++]=a[j++];
        }
    }
    while(i<=mid){
        z[k++]=a[i++];
    }
    while(j<=r){
        z[k++]=a[j++];
    }
    for(int o=l,p=0;o<=r;o++,p++){
        a[o]=z[p];
    }
}


void pt(int *a,int lg){
    for(int i=0;i<lg;i++)
    printf("%d  ",a[i]);
    printf("\n");
}
int main () {
    int a[]={1,3,2,6,12,5};
    for(int i=0;i<6;i++){
        printf("%d ",a[i]);
    }
    printf("\n");
    // quick_sort(a,0,5);
    gb(a,0,5);
    for(int i=0;i<6;i++){
        printf("%d ",a[i]);
    }
}