递归法快速排序
有些测试用例可以正确输出,有些不可以
#include<stdio.h>
#include<stdlib.h>
int fun(int a[], int i, int j)
{
int num = a[0];
int t;
int r = j;
i = i + 1;
if (i < j)
{
while (i < j)
{
while ((a[i] <= num )&& (i < j))
{
i++;
}
while ((a[j] >= num )&& (j > i))
{
j--;
}
t = a[i];
a[i] = a[j];
a[j] = t;
}
if (a[0] >= a[i])
{
a[0] = a[i];
a[i] = num;
}
else
{
a[0] = a[i-1];
a[i-1] = num;
}
fun(a, 0, i);
fun(a, j+1 , r);
return a[i];
}
else
return;
}
int main()
{
int a[20]={ 0 };
int i = 0;
printf("递归排序\n");
int MAX;
printf("请输入数字的个数");
scanf_s("%d", &MAX);
for (i = 0; i < MAX; i++)
{
printf("第%d个数:", i + 1);
scanf_s("%d", &a[i]);
}
fun(a, 0, MAX - 1);
printf("排列后数组为\n");
for (i = 0; i < MAX; i++)
printf("%d", a[i]);
system("pause");
return 0;
}
两个测试用例一个错(1)一个对(2)
1递归排序
请输入数字的个数5
第1个数:4
第2个数:7
第3个数:8
第4个数:1
第5个数:4
排列后数组为
14874请按任意键继续. . .
2递归排序
请输入数字的个数5
第1个数:8
第2个数:5
第3个数:7
第4个数:4
第5个数:1
排列后数组为
14578请按任意键继续. . .
我已经改崩溃了,实在不知道哪里错了,请大家帮忙看一看。