xiaogaotongxue__ 2021-03-30 18:41 采纳率: 73.3%
浏览 68
已结题

c语言,输出语句没有执行

#include <stdio.h>
 
void dayin(int array[], int max)    //max为数组元素最大值
{
 
    for(int i = 0; i < max; i++)
    {
        printf("%-3d", array[i]);
    }
    printf("\n");
}
void swap(int *a, int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
void quicksort(int array[], int n, int low, int high)
{
    int i=low, j=high+1;
        while(i<j){
        while(array[++i]<array[low]&&i<high);
        while(array[--i]>array[low]);
        if(i>=j) break;
         else swap(&array[i], &array[j]);
        }
        if(array[i] >= array[low])  // 取等>=
        {
            i--;
        }
 
        swap(&array[low], &array[i]);
         dayin(array, n);
 
        quicksort(array, n, low, i);
        quicksort(array, n, j, high);
    
}
 
// 主函数
int main()
{
    int i,n,array[30];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    scanf("%d",&array[i]);
    }
    quicksort(array, n, 0, n-1);  // 快速排序

    return 0;
}

这个快速排序输出语句好像没有执行,大佬可以指导一下吗,谢谢

  • 写回答

1条回答 默认 最新

  • cpp_learners 2021-03-30 20:09
    关注

    第一个while循环i++等于1;第二个whilei--又等于0,导致i一直都是0,永远无法跳出while(i<j)循环。

    while (array[++i] < array[low] && i < high);
    while (array[--i] > array[low]);
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月15日
  • 已采纳回答 6月15日

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图