1、快速排序

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 2e5 + 10;
ll a[N];
void quicksort(ll left, ll right) {if (left > right) {return;}ll i = left;ll j = right;ll temp = a[left]; // temp存放基准数while (i != j) {// 先从右往左找,小于基准数的元素while (a[j] >= temp && i < j) { j--;}// 再从左往右找,大于基准数的元素while (a[i] <= temp && i < j) {i++;}// 交换两个数在数组中的位置if (i < j) { // 当i与j没有相遇时ll t = a[i];a[i] = a[j];a[j] = t;}}// i==j 交换基准位置元素和i位置元素a[left] = a[i];a[i] = temp;quicksort(left, i - 1); // 继续处理左边的序列quicksort(i + 1, right); // 继续处理右边的序列return;
}int main() {ll n; // 数组长度cin >> n;// 读入数组for (ll i = 1; i <= n; i++) {cin >> a[i];}// 快速排序quicksort(1, n);// 输出排序后的数组元素for (ll i = 1; i <= n; i++) {cout << a[i] << " ";}return 0;
}
