P1177排序题解
这恐怕是一道 坑最多 最经典 的题目了。
这道题有两种解题方法:
1.自己写个排序函数
这里我们用最最最最常用的快速排序:
#include <iostream>
#define ll long long
using namespace std;
ll n,a[100005];
//定义一个交换函数
template <class Ty>
void q_swap(Ty &a,Ty &b){
Ty x=a;
a=b; b=x;
}
void q_sort(int _a,int _b){
if(_a>_b) return; //避免越界
int mid=a[_a]; //得到基准数
int i=_a,j=_b; //复制
while(i!=j){ //判断是否重合
while(a[i]<mid) i++; //遍历
while(a[j]>mid) j--;
if(i<j)
q_swap<ll>(a[i],a[j]); //调用交换函数
}
q_sort(_a,i-1); //向左边递归
q_sort(i+1,_b); //向右边递归
}
int main() {
ll i;
cin >> n;
for(i=0;i<n;i++) cin >> a[i];
//调用函数执行排序
q_sort(0,n-1);
for(i=0;i<n;i++) cout << a[i] << ' ';
return 0;
}
2.用C++自带排序函数
STL大法好,这想必大家都知道。
C++的STL库中自带了一个排序函数:sort
调用方法:sort(起始地址, 结束地址);
头文件:algorithm
代码:
#include <iostream>
#include <algorithm> //sort函数的头文件
#define ll long long
using namespace std;
ll n,a[100005];
int main() {
ll i;
cin >> n;
for(i=0;i<n;i++) cin >> a[i];
sort(a,a+n); //直接排序
for(i=0;i<n;i++) cout << a[i] << ' ';
return 0;
}
P1177排序题解的更多相关文章
- 洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈)
洛谷P1155 双栈排序题解(图论模型转换+二分图染色+栈) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1311990 原题地址:洛谷P1155 双栈排序 ...
- 【题解】 [HEOI2016]排序题解 (二分答案,线段树)
题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这个全排列序列进行 ...
- [SDOI2015]排序 题解 (搜索)
Description 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作有N种,每种操作最多可以执行一次,对于所有的i(1<=i<=N),第i中 ...
- HDU 1106 排序 题解
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- BZOJ3990:[SDOI2015]排序——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3990 小A有一个1-2^N的排列A[1..2^N],他希望将A数组从小到大排序,小A可以执行的操作 ...
- BZOJ4552:[HEOI2016/TJOI2016]排序——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4552 https://www.luogu.org/problemnew/show/P2824 在2 ...
- 洛谷 P1786 帮贡排序 题解
P1786 帮贡排序 题目背景 在absi2011的帮派里,死号偏多.现在absi2011和帮主等人联合决定,要清除一些死号,加进一些新号,同时还要鼓励帮贡多的人,对帮派进行一番休整. 题目描述 目前 ...
- Leetcode 1329. 将矩阵按对角线排序 题解
首先遍历对角线元素,顺序为: 先从第一列的最后一行到第一行 然后从第一行的第一列到最后一列 遍历的同时记录坐标和数值,对数值进行排序,然后坐标顺序放回. class Solution: def dia ...
- LuoguP7714 「EZEC-10」排列排序 题解
Content 给定一个 \(1\sim n\) 的一个排列 \(p\),你每次可以选择一个区间 \([l,r]\) 并花费 \(r-l+1\) 的代价将下标在这个区间内的所有数升序排序,求使得排列 ...
随机推荐
- 【巨杉数据库SequoiaDB】助力金融科技升级,巨杉数据库闪耀金融展
11月4日,以“科技助创新 开放促改革 发展惠民生”为主题的2019中国国际金融展和深圳国际金融博览会在深圳会展中心盛大开幕. 中国人民银行党委委员.副行长范一飞,深圳市人民政府副市长.党组成员艾学峰 ...
- 巴塞尔问题(Basel problem)的多种解法
巴塞尔问题(Basel problem)的多种解法——怎么计算\frac{1}{1^2}+\frac{1}{2^2}+\frac{1}{3^2}+\cdots112+122+132+⋯ ? (PS:本 ...
- sqlserver删除所有表、视图、存储过程
declare proccur cursor for select [name] from sysobjects where type='P' declare @procnam ...
- [CF527D] Clique Problem - 贪心
数轴上有n 个点,第i 个点的坐标为xi,权值为wi.两个点i,j之间存在一条边当且仅当 abs(xi-xj)>=wi+wj. 你需要求出这张图的最大团的点数. Solution 把每个点看作以 ...
- [TJOI2013] 拯救小矮人- 贪心,dp
结论:矮的人比高的人先走一定不会使得答案变劣 于是我们排序后,像 0-1 背包那样依次考虑每个人走不走 #include <bits/stdc++.h> using namespace s ...
- 二分-E - Rikka with Mutex
E - Rikka with Mutex Sometimes, technical terms implicate some life philosophy. Mutex is one of them ...
- web前端技术阅读
2015年 <响应式web设计>--响应式布局,渐进增强,优雅降级 <javascript高级程序设计>--js基础 2016年 <javascript语言精粹>- ...
- 最短路(Dijkstra,Floyd,Bellman_Ford,SPFA)
当然,这篇文章是借鉴大佬的... 最短路算法大约来说就是有4种——Dijkstra,Floyd,Bellman_Ford,SPFA 接下来,就可以一一看一下... 1.Dijkstra(权值非负,适用 ...
- mybatis-plus - buildSqlSessionFactory()
一. buildSqlSessionFactory() mybatis-plus 同样的是调用 factory.getObject() 方法来进行 SqlSessionFactory 创建的. 然后 ...
- join方法,wait()和sleep()
join方法解释:方法x.join()的作用是使所属线程x 正常执行run()中的方法,而使得调用x.join()的线程处于无限期阻塞状态,等待x线程销毁后再继续执行线程z后面的代码. 1.方法joi ...