问题遇到的现象和发生背景
使用qsort快速排序会超时?
奇怪?
请大家百忙之中看一看
感谢感谢!
问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
int a[5];//声明一个全局数组变量,保存主函数循环中的数
int cunchu(int n)//此函数是将计算将数据的每一位存储到数组中
{
int t = 0;
while (n > 0)
{
a[t++] = n % 10;
n /= 10;
}
return t;// 返回位数
}
int cmp_int1(const void* e1, const void* e2)
{
return *(int*)e2 - *(int*)e1;
}
int cmp_int2(const void* e1, const void* e2)
{
return *(int*)e1 - *(int*)e2;
}
int main()
{
int n = 0; int z = 1;//这里声明的z=1只是可以让循环跑起来的作用
scanf("%d", &n);
while (z != 6174 && z != 0)
{
int x = 0, y = 0;
int t = cunchu(n);//将这个数的每一位存储到数组中;
qsort(a, t, sizeof(a[0]), cmp_int1);//降序排序
for (int i = 0; i < t; i++)
x = x * 10 + a[i];//随之转化到最大值
qsort(a, t, sizeof(a[0]), cmp_int2);//升序排序
for (int i = 0; i < t; i++)
y = y * 10 + a[i];//随之转化到最小值
z = x - y;//计算这两个数的差值
printf("%04d - %04d = %04d", x, y, z);//打印数据
if (z != 6174)printf("\n");//控制输出格式
n = z;
}
return 0;
}