c++STL之sort排序
排序算法为竞赛中最常用的算法之一,我们可以利用C++自带的库函数进行排序。
————《信息学奥赛一本通》
#include<iostream>
#include<algorithm> int main()
{
int a[];
int n;
std::cin>>n;
for(int i=;i<n;i++)
{
std::cin>>a[n];//输入
}
std::sort(a+,a+n);//sort 排序 含义:升序排序a数组的第0位到a数组的第n位
for(int i=;i<n;i++)
{
std::cout<<a[n];//输出
}
return ;
}
以上是最最简单的一个用sort排序的程序
读者可能有疑问了,难道sort只能升序排序吗?
其实不然。sort默认确实是升序排序,不过你可以自己定义排序规则,比如说下面这样:
#include<iostream>
#include<algorithm>
int aa(int x,int y) 自己定义的排序规则,可以实现降序排序
{
if(x>y) return ;
else return ;
}
int main()
{
int a[];
int n;
std::cin>>n;
for(int i=;i<n;i++)
{
std::cin>>a[n];
}
std::sort(a+,a+n,aa);//排序a数组的第0位到第n位,用自己定义的aa排序规则
for(int i=;i<n;i++)
{
std::cout<<a[n];
}
return ;
}
这里定义的aa函数,就是你进行sort排序时的规则,这里这个规则可以随你写,比如说按照其他特征排序,如:关键字等等,而且其中的排序规则可以有多个,比如说下面这个:
int aa(const student & a,const student &b)
{
if(a.score>b.score) return ;
if(a.score<b.score) return ;
if(a.name<b.name) return ;
}
这个是对一个结构体中的数据进行排序,排序的规则是按照结构体中score的大小降序排序,如果两个score相等,就按照name的字典序升序排序,相信大家动能看得懂。
下面贴出一个例题:
Combination
(iknowss.cpp)
Description
有 n 个正整数,伟大的中国人民要把它们连接成一排,形成一个最大的integer。
举个栗子:n=3 时,3 个整数 1,3,4 联接成的最大整数为:431 又如:n=4 时,4 个整数 7,13,4,246 联接成的最大整数为:7424613
Input
N后跟n个正整数。
Output
连成的最大数
Hint
对于前7个数据,n<=100000
对于第8个数据,n<=10000
对于第9个数据,n<=1000
对于第10个数据,n<=100
对于所有数据,integer<=10^10
数据随机,略弱=-=
(以上又是二货学长改自noip题)
这个题最简单的方法就是用字符串格式输入的这几个数,按照字符串字典序sort,再降序输出就可以了(为什么这次学长出的题这么水。。。于是我就有时间多讲了点sort。。。)
以下贴出源代码:
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int aa(string x,string y)
{
if(x>y) return ;
else return ;
}
int main()
{
freopen("iknowss.in","r",stdin);
freopen("iknowss.out","w",stdout);
int n;
string zong[];
cin>>n;
for(int i=;i<n;i++)
{
string zhong;
cin>>zhong;
zong[i]=zhong;
}
sort(zong+,zong+n,aa);
for(int i=;i<n;i++)
{
cout<<zong[i];
}
return ;
}
完。
c++STL之sort排序的更多相关文章
- STL vector+sort排序和multiset/multimap排序比较
由 www.169it.com 搜集整理 在C++的STL库中,要实现排序可以通过将所有元素保存到vector中,然后通过sort算法来排序,也可以通过multimap实现在插入元素的时候进行排序.在 ...
- STL源代码分析——STL算法sort排序算法
前言 因为在前文的<STL算法剖析>中,源代码剖析许多,不方便学习,也不方便以后复习.这里把这些算法进行归类,对他们单独的源代码剖析进行解说.本文介绍的STL算法中的sort排序算法,SG ...
- STL中sort排序算法第三个参数_Compare的实现本质
关于C++ STL vector 中的sort排序算法有三种自定义实现,它们本质上都是返回bool类型,提供给sort函数作为第三个参数. 重载运算符 全局的比较函数 函数对象 我认为从实现方式看,重 ...
- STL之 sort排序与检索(2019.1.18)
1.作用对象:数组 a[n] 头文件:#include<algorithm> 内容:sort(a,a+n) 功能:进行升序排序 内容:lower_bound(a,a+n,x) 功能:找到 ...
- [转] C++的STL库,vector sort排序时间复杂度 及常见容器比较
http://www.169it.com/article/3215620760.html http://www.cnblogs.com/sharpfeng/archive/2012/09/18/269 ...
- 使用STL库sort函数对vector进行排序
使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...
- 标准模板库(STL)学习指南之sort排序
对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...
- STL 源码分析《1》---- list 归并排序的 迭代版本, 神奇的 STL list sort
最近在看 侯捷的 STL源码分析,发现了以下的这个list 排序算法,乍眼看去,实在难以看出它是归并排序. 平常大家写归并排序,通常写的是 递归版本..为了效率的考虑,STL库 给出了如下的 归并排序 ...
- 对vector等STL标准容器的排序操作
[+] STL提供的Sort 算法 所有sort算法介绍 sort 中的比较函数 sort 的稳定性 全排序 局部排序 nth_element 指定元素排序 partition 和stable_par ...
随机推荐
- @synthesize
@synthesize 相当于把属性当成成员变量来用,不用再写self.属性@synthesize myButton; 这样写了之后,那么编译器会自动生成myButton的实例变量,以及相应的gett ...
- GridView+ZedGraph【转】
edgraph图表控件的强大功能令人出乎意料,与OWC相比我想应该毫不逊色,近来需求要求作出相关数据统计,不想使用BI这类的强大东西,所以搜索到 了免费的开源的Zedgraph控件.使用起来也非常方便 ...
- 三维偏序-二维LIS
Another Longest Increasing Subsequence Problem 有两种思路. 思路一: 考虑到如果只有一维,那么可以用f[s]表示长度为s时,最后一个数是多少,把这个想法 ...
- Mysql常用命令行大全(转)
第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uro ...
- c链表结点的删除和添加
#include<stdio.h> #include<stdlib.h> typedef char datetype;/*定义新的数据类型名*/ typedef struct ...
- servlet示例
当用户向客户端发送一个请求,如: [plain] view plaincopy http://localhost:8088/ServApp/myreq.cg?param1=param 当Soc ...
- 处理事件的方式:两种类的覆盖处理(自己管理,覆盖专用事件函数;自己统一管理,覆盖QWidget::Event通用函数),一种对象的处理(父控件统一管理,即安装过滤器),两种全局处理(QCoreApplication安装过滤器;覆盖notify方法)
虽然只有一句话,但却是我自己的心得. 特别注意,bool QCoreApplication::notify(QObject *receiver, QEvent *event) 明确指明了要发送的对象, ...
- 线程初步了解 - <第一篇>
操作系统通过线程对程序的执行进行管理,当操作系统运行一个程序的时候,首先,操作系统将为这个准备运行的程序分配一个进程,以管理这个程序所需要的各种资源.在这些资源之中,会包含一个称为主线程的线程数据结构 ...
- Qt编程之QImage类小结
最近用Qt做图像处理,以下references是需要用到的 references: http://blog.csdn.net/lyc_daniel/article/details/9193881 ht ...
- 关于ViewPager被嵌套在ScrollView中不显示的问题
关于ViewPager被嵌套在ScrollView中不显示的问题 进入全屏 ScrollView 嵌套ViewPager,要不是业务需求这样,估计没人愿意这么干!因为这种方式,会问题多多,简单百度一下 ...