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

这里是代码!


#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;
}

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

这该死的算法

没错,你可以用优先队列或sort

改好啦,新的代码如下

#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++){
        printf("%d ",arr[i]);
    }
    cout<<endl;
    return;
}

//快速排序函数
void quickSort(int * arr,int left,int right){
    
    if(right - left <= 1){
        
        if(right - left == 1){
            if(arr[right] < arr[left]){
                swap(&arr[right],&arr[left]);
            }
        }
        
        //printf("退出递归\n");
        return;
    }
    
    else{
        //printf("进行循环\n");
        int l = left+1,r = right;
        int num = arr[left];
        
        while(l < r){
            
                while(arr[r] >= num && l < r)r--;
                while(arr[l] <= num && l < r)l++;
        
                if(r != l){
                swap(&(arr[r]),&(arr[l]));
                //printf("交换\n");
                }
              else{
                    swap(&(arr[r]),&(arr[left]));
                    //printf("基准被交换\n");
                }
                
        }
        
        //printf("进入递归\n");
        quickSort(arr,0,r);
        quickSort(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]);
    }
    
    //排序
    quickSort(arr,0,num-1);
    
    //输出 
    out(arr,num);
    
    return 0;
}