社区讨论

大佬们,我手写的sort拿错了?

灌水区参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m3v7iaif
此快照首次捕获于
2024/11/24 14:16
去年
此快照最后确认于
2025/11/04 14:02
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[1000];
int n;
int leftt=0,rightt=n-1;
void fun(int start,int end) {
	int l=leftt;
	int r=rightt;
	int base=a[0];
	if(l>=r) {//如果左指针越过右指针
		return;
	}
	while(l<r) {
		while(a[r]>=base&&l<r) {		//从右往左开始扫荡
			r--;
		}
		if(l<r) {
			a[l]=a[r];
			l++;
		}
		while(a[l]<=base&&l<r) {			//从左往右开始扫荡
			l++;
		}
		if(l<r) {
			a[r]=a[l];
			r--;
		}
		a[l]=base;
	}
	fun(leftt,l-1);
	fun(leftt+1,r);
}
int main() {
	cin>>n;
	for(int i=0; i<n; i++) {
		cin>>a[i];
	}
	fun(leftt,rightt);
	for(int i=0; i<n; i++) {
		cout<<a[i]<<' ';
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...