40分 快速排序求助!QAQ感谢
查看原帖
40分 快速排序求助!QAQ感谢
1107382
Yg2023楼主2023/10/25 21:39
#include <stdio.h>
#include <stdlib.h>
//int arr[10];
void change(int *a,int *b){
    
    *a=*b;
   
}
/*int myrand(int l, int r) {
    return rand() % (r - l + 1) + l;
}*/
void quickSort(int *arr,int start,int end) {
    if(start>end)
        return;
    if(start<end)
    {
        int base =arr[start];
        int left = start;
        int right = end;
        while(left<right)
        {
            while(arr[right] >= base && left < right)
            {
                right--;
            }
            change(&arr[left],&arr[right]);
            while(arr[left] <= base && left < right)
            {
                left++;
            }
            change(&arr[right],&arr[left]);
        }
        if(left==right)
            change(&arr[left],&base);
        if(start<left-1)
        quickSort(arr,start,left-1);
        if(left+1<end)
        quickSort(arr,left+1,end);
    }
}
int main(int argc, const char * argv[]) {
    int start=0,n;
    scanf("%d",&n);
    int arr[n];
    for(int i=0;i<n;i++)
        scanf("%d",&arr[i]);
    quickSort(arr,start,n-1);
    
    for(int i=0;i<n-1;i++)
        printf("%d ",arr[i]);
    printf("%d",arr[n-1]);
    printf("\n");
    return 0;
}
2023/10/25 21:39
加载中...