社区讨论
我绞尽脑汁,就是想不出来...
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 条回复,欢迎继续交流。
正在加载回复...