沧桑债主 2021-08-26 22:46 采纳率: 100%
浏览 66
已结题

快速排序算法,无内容输出,求解惑

这里是代码!


#include <iostream>
#include <cstdio>

using namespace std;

//mod-位置交换 
void swap(int * a,int * b){
    
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
    
    return;
}

//mod-数组输出
void out(int * arr,int num){
    
    for(int i=0;i < num;i++){
        cout<<arr[i];
    }
    cout<<endl;
    
    return;
}

//快速排序函数
void change(int * arr,int left,int right){
    
    if(left == right){
        return;
    }
    
    int l = left+1,r = right;
    int num = arr[left];
    
    while(l != r){
        
        while(arr[r] >= num)r--;
        while(arr[l] <= num && l < r)l++;
        
        if(r != l){
            swap(&(arr[r]),&(arr[l]));
        }
        else{
            swap(&(arr[r]),&(arr[left]));
        }
    }
    
    
    change(arr,0,r);
    change(arr,r,right);
    
    return;
} 

int main(){
    
    //输入数据个数 
    int num;
    scanf("%d",&num);
    
    //输入数组arr 
    int arr[num];
    for(int i=0;i < num;i++){
        scanf("%d",&arr[i]);
    }
    
    //排序
    change(arr,0,num-1);
    
    //输出 
    out(arr,num); 
    
    return 0;
}
  • 写回答

4条回答 默认 最新

  • 关注

    可能是你22行的for循环的循环条件不满足(也就是说num或arr有问题),所以无法执行输出i的代码。
    去检查arr和num吧
    若有帮助,还望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月27日
  • 创建了问题 8月26日

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办