#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);
}