快速排序算法

阅读 34

2022-01-23

#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)

0 0 举报