风起鸿庄Nirvana 2021-07-06 12:55 采纳率: 85.7%
浏览 35
已采纳

为什么照着书敲完的代码运行结果总是0?(快速排序)

#include <stdio.h>
int a[101], n;
int quicksort(int left, int right)
{
    int i, j, t, temp;
    if (left > right)
        return;
    temp = a[left];
    i = left;
    j = right;
    while (i != j)
    {
        while (a[j] >= temp && i < j)
            j--;//右边的j先动
        while (a[i] <= temp && i < j)
            i++;//左边的i后动
        //交换两个数在数组中的位置
        if (i < j)
        {
            t = a[i];
            a[i] = a[j];
            a[j] = t;
        }
    }
    a[left] = a[i];
    a[i] = temp;
    quicksort(left, i - 1);//继续处理左边的,这是一个递归的过程
    quicksort(i + 1, right);//继续处理右边的,这是一个递归的过程
}
int main()
{
    int i, j, t;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
        scanf("%d", &n);
    quicksort(1, n);//从第一个数到第n个数进行快速排序
    for (i = 1; i <= n; i++)
        printf("%d", a[i]);
    return 0;
}

请问是vs2019相关配置的问题吗?还是电脑本身出了什么毛病?感谢解答

  • 写回答

1条回答 默认 最新

  • 八云黧 2021-07-06 13:34
    关注

    将main函数改为如下代码:

    int main()
    {
        int i, j, t;
        scanf("%d", &n);
        for (i = 1; i <= n; i++){
            scanf("%d", &t);
            a[i]=t;
        }
        quicksort(1, n);//从第一个数到第n个数进行快速排序
        for (i = 1; i <= n; i++)
            printf("%d ", a[i]);
        return 0;
    }
    

    可以看到main函数中声明了t但没有使用,于此同时下面的scanf居然把每一次输入放进了n里面,这显然不合理

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP