第一讲 基础算法

1.快速排序

https://www.acwing.com/problem/content/787/

#include <iostream>
using namespace std;

const int N = 100010;
int n;
int a[N];

void quick_sort(int a[],int l,int r){
    if(l >= r) return;
    swap(a[l],a[(l+r) >> 1]);
    int pivot = a[l];
    int i = l,j = r;
    while(i < j){
        if(a[j] >= pivot && i < j) j--;
        a[i] = a[j];
        if(a[i] <= pivot && i < j) i++;
        a[j] = a[i];
    }
    a[i] = pivot;
    quick_sort(a,l,i-1);
    quick_sort(a,i+1,r);

}

int main(){
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];
    quick_sort(a,1,n);
    for(int i = 1; i <= n; i++) cout << a[i] << " ";
    
    return 0;
}
上一篇:快排的灵活运用


下一篇:阿里云Quick BI学习之报表制作