c语言的快速排序法。那里错了,输出结果还是原来的顺序啊??

#include<stdio.h>
int main()
{
int a[10]={21,23,55,77,99,23,44,66,88,13};
int low=0;
int high=9;
int qpass(int a[],int low,int high);
void qsort(int a[],int low,int high);
qsort(a,low,high);
for(int i=0;i<10;i++)
{
printf("%6d",a[i]);
}
return 0;
}

int qpass(int a[],int low,int high)
{
int x=a[low];
int key=a[low];
while(low<high)
{
while(low<high && key>=key)
high--;
if(low<high)
{
a[low]=a[high];
low++;
}
while(low<high && a[low]<key)
low++;
if(low<high)
{
a[high]=a[low];
high--;
}
a[low]=x;
return low;
}
}

void qsort(int a[],int low,int high)
{
if(low<high)
{
int pos=qpass(a,low,high);
qsort(a,low,pos-1);
qsort(a,pos+1,high);
}
}

void qsort(int a[],int low,int high)
{
if(low<high)
{
int pos=qpass(a,low,high);
qsort(a,low,pos-1);
qsort(a,pos+1,high);
}
}int qpass(int a[],int low,int high)
{
int x=a[low];
int key=a[low];
while(low<high)
{
while(low<high && a[high]>key)//改了这里
high--;
if(low<high)
{
a[low]=a[high];
low++;
}
while(low<high && a[low]<=key)//这里
low++;
if(low<high)
{
a[high]=a[low];
high--;
}
a[low]=x;
}
return low;//还有这里
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-28
while(low<high && key>=key)追问

这是输出结果还是不对呢

相似回答
大家正在搜