关于快速排序的问题
#include<stdio.h>
#include<stdlib.h>
void quick1(int a[],int low,int up)
{
int i,j,temp;
if(low<up)
{
i=low;
j=up;
temp=a[low];
while(i<j)
{
for(;a[j]>temp;j--);
a[i++]=a[j];
for(;a[i]<=temp;i++);
a[j--]=a[i];
printf("i=%d ,j=%d,\n",i,j);
}
a[i]=temp;
quick1(a,low,i-1);
quick1(a,i+1,up);
}
}
void quick2(int a[],int low,int up)
{
int i,j,temp;
if(low<up)
{
i=low;
j=up;
temp=a[low];
while(i!=j)
{
while(i<j&&a[j]>temp)j--;
if(i<j)a[i++]=a[j];
while(i<j&&a[i]<=temp)i++;
if(i<j)a[j--]=a[i];
printf("i=%d ,j=%d,\n",i,j);
}
a[i]=temp;
quick2(a,low,i-1);
quick2(a,i+1,up);
}
}
int main()
{
int a[]={14,32,45,65,12,22};
int i;
quick2(a,0,5);
for(i=0;i<6;i++)printf("%d ",a[i]);
printf("\n");
quick1(a,0,5);
for(i=0;i<6;i++)printf("%d ",a[i]);
system("pause");
return 0;
}
quick1是我自己写的快速排序,为什么会行不通?不知道哪里错了。
quick2是课本上的。。。请大神求教!!!!感激不尽!