啥羔羊 2021-12-19 20:27 采纳率: 0%
浏览 14

PTA 乙级 1019 数字黑洞 (qsort排序竟然超时?)

问题遇到的现象和发生背景

使用qsort快速排序会超时?
奇怪?
请大家百忙之中看一看
感谢感谢!

img

问题相关代码,请勿粘贴截图
#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;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-12-19 21:20
    关注

    从升序变为降序,首尾交换就好了,不需要qsort吧

    评论

报告相同问题?

问题事件

  • 创建了问题 12月19日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题