大家帮忙看看我的程序

来源:百度知道 编辑:UC知道 时间:2024/06/15 15:49:53
#include <stdio.h>/*快速排序(从小到大)*/
#define NUM 10
void qsort(int array[],int left,int right)
{
int l,r,t,mid;
mid=(left+right)/2;
l=left;
r=right;
do
{
while (array[l]<=array[mid])
{
l++;
}
while (array[mid]<=array[r])
{
r--;
}
if (l>=r)
{
t=array[l];
array[l]=array[r];
array[r]=t;
}
}
while (l>=r);
qsort(array,left,mid);
qsort(array,mid+1,right);

}
void main()
{
int i,left,right,a[NUM];
printf("input the %d data:",NUM);
for (i=1;i<=NUM;i++)
{
scanf("%d",&a[i]);
}
left=1;
right=NUM;
qsort(a,left,right);
for (i=1;i<=NUM;i++)
{
printf("%d ",a[i]);
}

}
老是有错,请大虾们帮忙看看~

if (l>=r)
{
t=array[l];
array[l]=array[r];
array[r]=t;
}
这个交换似乎没有道理,是不是要改成l<r?

while (l>=r);
这个是不是要死循环了...

while (array[l]<=array[mid])
你这个array[mid]在排序过程中可能是变的,不信可以调试着看一下