#include<stdio.h>
int swap(int *a,int b,int c)
{
int d=a[b];
a[b]=a[c];
a[c]=d;
}
int digui(int *a,int b,int c)
{
if(b>=c)
{
return 0;
}
int d=b,e=c;
int f=a[b];
while(b!=c)
{
while(a[c]>f&&b!=c)
{
c--;
}
swap(a,a[b],a[c]);
b++;
while(a[b]<f&&b!=c)
{
b++;
}
swap(a,a[b],a[c]);
if(b==c)
{
a[b]=f;
}
}
digui(a,e+1,c);
digui(a,b,d-1);
}
int main()
{
int a[10],i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
digui(a,0,9);
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
}
为什么会输出不了结果呢 求大佬解决
1、digui()和swap()两个函数返回值都没有,编都编不过,怎么输出结果呢?
2、整个思路就不对,很绕而且不能解决问题,建议先看看成熟的排序算法
#include int digui(int *a,int b,int c) { if(b>=c) { return 0; } int d=b,e=c; int p=a[d]; while(dp&&d=e) { a[d]=p; } } digui(a,b,e-1); digui(a,e+1,c); } int main() { int a[5],i; for(i=0;i<5;i++) { scanf("%d",&a[i]); } digui(a,0,4); for(i=0;i<5;i++) { printf("%d ",a[i]); } }