社区讨论

我绞尽脑汁,就是想不出来...

P1177【模板】排序参与者 7已保存回复 8

讨论操作

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

当前回复
8 条
当前快照
1 份
快照标识符
@lo8siyox
此快照首次捕获于
2023/10/27 23:51
2 年前
此快照最后确认于
2023/10/27 23:51
2 年前
查看原帖
我先用sort排序做,三个WA...
CPP
#include <bits/stdc++.h>
using namespace std;
long long a[1000001]={};
int main()
{
	long long n;
	cin>>n;
	long long i;
	for(i=1;i<=n;i++) cin>>a[i];
	sort(a,a+n);
	for(i=1;i<=n;i++) cout<<a[i]<<" ";
	return 0;
 } 
然后自己又写了一遍...
CPP
#include <bits/stdc++.h>
using namespace std;
int a[1000]={};
void quicksort(int l,int r)
{
	if(l>=r) return;//如果 左边大于右边,也就是数组如果倒过来,就退出 
	int i=l,j=r,key=a[l];//定义i=左边,j=右边,key=a[l] 
	while(i<j)//while循环,如果i<j,就退出循环 
	{
		while(i<j&&a[j]<=key) j--;//右边往左边找一个比key大的值 
		while(i<j&&a[i]>=key) i++;//左边往右边找一个比key小的值 
		if(i<j) swap(a[i],a[j]);//如果i<j,就交换a[i]与a[j]个交换 
	}
	swap(a[i],a[l]);//把基准值交换到正确的位置 
	quicksort(l,i-1);//递归左区间 
	quicksort(i+1,r);//递归右区间 
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	quicksort(1,n);
	for(int i=n;i>=1;i++)
	{
		cout<<a[i]<<" ";
	}
	return  0;
}
好家伙,3个TEL,两个RE...

回复

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

正在加载回复...