求助
查看原帖
求助
402190
小小方糖楼主2020/11/8 21:30
#include<bits/stdc++.h>
using namespace std;

int a[100001];
void qsort(int l, int r){
	// 如果没有数就退出 
	if(l > r) return ;
	int i = l, j = r, base = a[l];
	// 必定相遇,相遇后情况在循环外处理 
	while(i != j){
		// 确定位置 
		for(; a[j] >= base && i < j; j--);
		for(; a[i] <= base && i < j; i++);
		// 两个指针没有相遇 
		if(i < j) swap(a[i], a[j]);
	}
	swap(a[l], a[i]);
	qsort(l, i - 1);
	qsort(i + 1, r);
}

int main(){
	cin.tie(0);
	std::ios::sync_with_stdio(false);
	int n;
	cin >> n; 
	for(int i = 1; i <= n; i++) cin >> a[i];
	qsort(1, n);
	for(int i = 1; i <= n; i++) cout << a[i] << ' ';

	return 0;
}

TLETLE了3个点。是不是基准数要找中间的啊?

2020/11/8 21:30
加载中...