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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效