ACM_ICPC竞赛中sort函数的简要介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Electronic Technology & Software Engineering 电子技术与软件工程• 227Program Design •
程序设计【关键词】sort 函数 程序设计
1 sort函数的介绍及优点
sort 函数是STL 中用于对给定区间
进行排序的函数,所在头文件是#include
<algorithm>。
主要原理是快速排序,但又不是
简单的快速排序,它还结合了插入排序和堆排
序,根据需要排序对象的不同情况,自动选用
合适的排序方法。
所以虽然理论上sort 函数和
快速排序的复杂度都是O(n*logn),但在实际
应用中,sort 函数比快速排序的效率更高,实
用方法简单,因此更加实用。
2 sort函数的使用方法
sort 函数有三个参数
(1)要排序数组的起始地址。
(2)要排序数组的结束地址,即最后一
个要排序地址的下一个地址。
(3)排序方法,可以是从大到小,也可
以自定义,也可以不写,如果不写,默认的排
序方式是从小到大排序。
sort 函数使用模板是:
sort(start,end,cmp);
对区间[first,last)根据cmp 的方式进行排
序。
3 sort函数的用法举例
3.1 直接使用
整型默认为从小到大排序,字符型根据
ASCII 码值进行排序。
int a[N];
sort(a+first,a+last);
N 为整型常数,first 为起始地址,last 为
结束地址。
3.2 自定义排序ACM_ICPC 竞赛中sort 函数的简要介绍
文/焦静颐 崔驭 贾子璇
3.2.1 自定义比较函数int a[N];bool cmp(int x,int y){return x>y;}sort(a+first,a+last,cmp);系统默认为x>y 返回true ,故程序是从大到小排序。
3.2.2 重载比较运算符这种方法用于结构体中。
struct point {int a,b;}e[N];bool operator<(const point& x,const point& y){if(x.a==y.a) return x.b<y.b; return x.a>y.a;}sort(e+first,e+last);根据成员a 的数值由大到小排序,当a 的数值相同时,根据成员b 的数值由小到大排序。
4 结束语sort 函数在使用上带来极大便利,因为高效率,使用灵活的特点,无论是在日常开发中还是算法竞赛中,sort 函数都能发挥很大的作用。
本文介绍了sort 的使用方法,只要加以练习,就可以将sort 函数更好的应用。
掌握好sort 函数对学生学习其他STL 函数也有很大帮助,可以提高学生的编程能力。
参考文献[1]Nicolai M.Josuttis.C++标准程序库[M]. 华中科技大学出版社,2002.[2]刘汝佳.算法竞赛入门经典(第二版)[M]. 清华大学出版社,2014.作者简介焦静颐(2000-),女,天津市人。
大学本科在读。
主要研究方向为计算机类。
作者单位河北农业大学信息科学与技术学院 河北省保定市 071001。