题意:
        输入整型数组和排序标识,对其元素按照升序或降序进行排序。

方法一:
C++快排函数

思路:
        模拟。
        当排序标识是0时,升序;
        当排序标识是1时,降序。

#include <bits/stdc++.h>

using namespace std;

int main(){
    
    int n,a[1005],x;
    cin >> n;
    for(int i=0;i<n;i++)//输入
        cin >> a[i];
    cin >> x;
    if(x==0){
        sort(a,a+n);//升序
    }else{
        sort(a,a+n,greater<int>());//降序
    }
    for(int i=0;i<n;i++)//输出
        cout << a[i] << " ";
    cout << endl;
    return 0;
}

时间复杂度:
空间复杂度:

方法二:
手写快排

思路:
        以最左的数设置为哨兵值。
        操作使得小于等于哨兵值的数在哨兵值左边,大于等于哨兵值的数在哨兵值右边。
        最后,递归左区间,递归右区间。        

        


#include <bits/stdc++.h>

using namespace std;

int n,a[1005],x;

void quick_sort(int l,int r){//升序
    if(l>=r)
        return;
    int i=l,j=r;
    int t=a[i];//哨兵值
    //小于等于哨兵值的数在哨兵值左边,大于等于哨兵值的数在哨兵值右边
    while(i<j){//循环
        while(i<j&&a[j]>=t)
            j--;
        a[i]=a[j];
        while(i<j&&a[i]<=t)
            i++;
        a[j]=a[i];
    }
    a[i]=t;
    quick_sort(l,i-1);//左递归
    quick_sort(i+1,r);//右递归
}

int main(){
    
    
    cin >> n;
    for(int i=0;i<n;i++)//输入
        cin >> a[i];
    cin >> x;
    if(x==0){
        quick_sort(0,n-1);//升序
    }else{
        quick_sort(0,n-1);
        reverse(a,a+n);//降序
    }
    for(int i=0;i<n;i++)//输出
        cout << a[i] << " ";
    cout << endl;
    return 0;
}

时间复杂度:
空间复杂度: