0
点赞
收藏
分享

微信扫一扫

快速排序算法

_铁马冰河_ 2022-01-23 阅读 33
#include <iostream>
using namespace std;

const int N = 1000010;
int q[N];
int n;

void Quick_Sort(int *arr, int begin, int end){
    if(begin > end)
        return;
        
    //选取数组中的第一个元素为轴 
    int tmp = arr[begin];
    int i = begin;
    int j = end;
    while(i != j){
        while(arr[j] >= tmp && j > i)
            j--;
        while(arr[i] <= tmp && j > i)
            i++;
        if(j > i){
            int t = arr[i];
            arr[i] = arr[j];
            arr[j] = t;
        }
    }
    
    //交换过程中由于数组第一个元素参与了交换 
    arr[begin] = arr[i];
    arr[i] = tmp;
    Quick_Sort(arr, begin, i-1);
    Quick_Sort(arr, i+1, end);
}


int main() {
    scanf("%d", &n);
    for(int i=0; i<n; i++) scanf("%d", &q[i]);
    
    Quick_Sort(q, 0, n-1);
    
    for(int i=0; i<n; i++) {
        printf("%d ", q[i]);
    }
    
    return 0;
}

举报

相关推荐

0 条评论