想问下各位大佬这个快速排序哪错了?执行程序没有结果

#include <stdio.h>

void QuickSort(int A[],int i,int j){

 int begin,end;

   begin= i;

   end=j;

 if(i<j){

  A[0]=A[i];

  while(i<j){

   while(i<j&&A[j]>A[0]) j--;

   A[i]=A[j];

      while(i<j&&A[i]<A[0]) i++;

   A[j]=A[i];

  }

     A[i]=A[0];

     QuickSort(A,begin,i-1);

     QuickSort(A,i+1,end);

 }

 I 

 

int main(void){

 int A[]={0,1,32,44,32,55,78,9,0,29,10};

 int i;

 QuickSort(A,1,10);

 for(i=1;i<11;i++)

 printf("%d ",A[i]);

 return 0;

}

 

你的代码在找到比标定值大和小之后交换的时候就出错了。

建议你参照一下这个文章叭

void Quick_Sort(int *arr, int begin, int end)
{
    if(begin > end)
        return;
    int tmp = arr[begin];
    int i = begin;
    int j = end;
    while(i != j)
    {
        while(arr[j] >= tmp && j > i)
            j--;
        while(arr[i] <= tmp && j > i)
            i++;
        if(j > i)
        {
            int t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    }
    arr[begin] = arr[i];
    arr[i] = tmp;
    Quick_Sort(arr, begin, i-1);
    Quick_Sort(arr, i+1, end);
}

https://blog.csdn.net/qq_40941722/article/details/94396010