快速排序的一个代码 不知道为什么出问题

#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]); } }