文章
19
粉丝
0
获赞
125
访问
2.9k
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int a[N];
void quickSort(int l, int r) {
if(l >= r) return;
int x = a[l], i = l, j = r; // 定义基准元素和双指针
while(i < j) {
while(i < j && a[j] > x) { // 先从右往左找第一个小于等于x的元素,不符合要求的跳过
j --;
}
if(i < j) a[i ++] = a[j]; // 若找到,替换到位置i(左边)指针右移
while(i < j && a[i] < x) { // 从左往右找第一个大于等于x的元素,不符合要求的跳过
i ++;
}
if(i < j) a[j --] = a[i]; // 若找到,替换到位置j(右边)指针左移
}
a[i] = x; // i=j时,基准元素在中间
quickSort(l, i - 1);
quickSort(i + 1, r);
}
int main() {
int n;
cin >> n;
for(int i = 0; i < n; i++) cin >> a[i];
quickSort(0 , n - 1);
for(int i = 0; i < n; i++) cout << a[i] << " ";
cout << endl;
return 0;
}
登录后发布评论
暂无评论,来抢沙发