大佬们好,这个程序编写输出应该是-985 -93 -2 0 1 4才对 ,为什么是-985 -93 -93 -93 -93 -2呢? 那个环节出了问题
#include<stdio.h>int FindPos(int * a,int low,int high);
void QuickSort(int * a,int low,int high);
int main(void)
{ int i;
int a[6]={-2, 1, 0, -985, 4, -93};
QuickSort(a,0,5);
//第二个参数表示第一个元素下标,第三个参数表示最后一个元素的下标
for(i=0;i<6;i++)
{
printf("%d",a[i]);
}
printf("\n");
return 0;
}
void QuickSort(int * a,int low,int high)
{
int pos;
if(low<high)
{
pos=FindPos(a,low,high);//找到pos的中间位置
QuickSort(a,low,pos-1);//pos的左边
QuickSort(a,pos+1,high); //pos的右边
}
}
int FindPos(int * a,int low,int high)
{
int val=a[low];
while(low<high)
{
while(low<high&&a[high]>=val)
{
high--;
}
a[low]=a[high];
while(low<high&&a[low]<=val)
{
low++;
}
a[high]==a[low];
} //终止while循环之后low和high是相等的
a[low]=val;
return high;//high可以改为low 不可改成val a[low] a[high]
}