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\) 的代价将下标在这个区间内的所有数升序排序,求使得排列 ...
随机推荐
- mysql如何让两个字段数据都不能重复?
目录 场景 任务(需求) 行动(解决方案) 方案1:从代码层面解决(正确方案) 方案2:设置成两个唯一索引(正确方案) 方案3:删掉中间表,把从表的主键作为主表的外键,并将外键设置成唯一索引(正确方案 ...
- 你这是virus吧?
谁在我的vps上跑了这个?我的备份终于起一定作用了. GO declare @sql varchar(8000) while (select count(*) from sysobjects wher ...
- (CPSCA's)CPOJC+VIJOS
Coding Plus System Core Association 建立的Coding Plus Online Judge China 在Vijos上初步落脚,让我们拭目以待,等待暑假期间ACM1 ...
- Android开发菜单以及子菜单
package com.example.androidtest; import android.app.Activity; import android.os.Bundle; import andro ...
- mysql之数据初始化update操作
1.单表的:update user set name = (select name from user where id in (select id from user where name='小苏' ...
- vue keep-alive 遇见 vue-router
keep-alive 遇见 vue-router ·keep-alive 是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染 ·routre-view也是一个组件,如果直接被包在kee ...
- 在MATLAB R2018b中配置VLFeat
在MATLAB R2018b中配置VLFeat 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ VLFeat官网:http://www.vlfeat.o ...
- C++-POJ3735-Training little cats[矩阵乘法][快速幂]
矩阵快速幂,主要是考构造.另外,swap总是写龊? 为什么?干脆放弃了.唉,我太难了. 思路:操作e和s都很好想,主要是g操作 我们可以额外空出一位,记为1,每次要加1,就对这个额外的1进行计算即可 ...
- Java8之Stream详解
Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作. 一.流的初始化与转换 Java中的Stream的所有操作 ...
- Ubuntu OS 打开端口命令
直接执行命令:ufw allow 80 再去修改对应功能配置文件的端口号