{
int low=head,high=tail
int s=p[head]
if(head>=tail)return
while(low<high){
while(low<high&&p[high]>s)high--
if(low<high)p[low++]=p[high]
while(low<high&&p[low]<=s)low++
if(low<high)p[high--]=p[low]
}p[low]=s
quickSort(p,head,low-1)quickSort(p,low+1,tail)
}void main()
{
int i=0
int array[10]={3,7,2,8,6,8,4,3,2,9}
quickSort(array,0,9)
for(i=0i<10i++)
{
printf("%d ",array[i])
}
printf("\n")
}
首先 你在if(i<j){r[j]=r[i]j--}}这里多了一个}符号
第二
while(ii&&r[j]>=r[0])
if(ii&&r[i]<=r[0])
其他的我还在帮你看
好吧,上面两个语句还有两个问题,应该把i换成j,否则一开始就判断为假
我完全看不懂你混乱的思维,直接给你贴一个快排的代码
void quiksort(int a[],int low,int high){
int i = low
int j = high int temp = a[i] if( low <high){ while(i <j) {while((a[j] >= temp) &&(i <j)){ j--}a[i] = a[j] while((a[i] <= temp) &&(i <j)){i++} a[j]= a[i] }a[i] = temp quiksort(a,low,i-1) quiksort(a,j+1,high) }else{return }}
void main()
{
int arry[5] = {23,1,21,4,19}
quiksort(arry,0,4)
for(i=0i<5i++)
{
printf("%d ",arr[i])
}
printf("\n")
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)