sort()函数

一: 简介

sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include“algorithm”的c++标准库中。

Sort(start,end,cmp)
(1)start表示要排序数组的起始地址;
(2)end表示数组结束地址的下一位;
(3)cmp用于规定排序的方法,可不填,默认升序。

二:实例
1.以int为例的基本数据类型的sort使用

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{int a[5]={1,3,4,2,5};sort(a,a+5);for(int i=0;i<5;i++)cout<<a[i]<<' ';return 0;}

因为没有cmp参数,默认为非降序排序,结果为:
1 2 3 4 5
若设计为非升序排序,则cmp函数的编写:

bool cmp(int a,int b)
{return a>b;
}

标准库里有现成的,在functional里,直接用就可以。functional提供了一堆基于模板的比较函数对象。它们是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。对于这个问题来说,greater和less就足够了,直接拿过来用:

升序:sort(begin,end,less<data-type>());降序:sort(begin,end,greater<data-type>()).
int  main ( )
{int a[20]={2,4,1,23,5,76,0,43,24,65},i;for(i=0;i<20;i++)cout<<a[i]<<endl;sort(a,a+20,greater<int>());for(i=0;i<20;i++)cout<<a[i]<<endl;return 0;
}

二:引用数据类型string的使用
一个字符串间的字符排序:
使用迭代器可以完成顺序排序

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{string str("hello world");sort(str.begin(),str.end());cout<<str;return 0;}

结果:空格dehllloorw

使用反向迭代器可以完成逆序排序

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{string str("hello world");sort(str.rbegin(),str.rend());cout<<str;return 0;}

结果:wroolllhde空格

字符串间的比较排序

#include<iostream>
#include<cstring >
#include<algorithm>
using namespace std;
int main()
{string a[4];for(int i=0;i<4;i++)getline(cin,a[i]);sort(a,a+4);for(int i=0;i<4;i++)cout<<a[i]<<endl;return 0;
}

三:以结构体为例的二级排序

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
struct link
{int a,b;
};
bool cmp(link x,link y)
{if(x.a==y.a)return x.b>y.b;return x.a<y.a;
}
int main()
{link x[4];for(int i=0;i<4;i++)cin>>x[i].a>>x[i].b;sort(x,x+4,cmp);for(int i=0;i<4;i++)cout<<x[i].a<<' '<<x[i].b<<endl;return 0;}

想对它进行排序:先按a值升序排列,如果a值相同,再按b值降序排列

若是遇到了对结构体中的一个元素进行排序的时候,就得cmp函数来判断:
例:

struct Node {int a;int b;int c;
};
vector<Node>p;

若是针对c排序,然后整体跟着排序:

bool cmp(Node start, Node end)
{return start.c < end.c;  //按着耗资来排序
}
sort(p.begin(),p.end(),cmp);

sort()函数用法相关推荐

  1. matlab sort descend,详解Matlab中 sort 函数用法

    搜索热词 (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,3; ...

  2. sort函数用法python_python内置函数sorted()及sort() 函数用法和区别

    python内置函数sorted(),sort()都有排序的意思,但是两者有本质的区别,sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作,list 的 sort ...

  3. c语言sort函数的使用方法,Perl Sort函数用法总结和使用实例

    一) sort函数用法 sort LIST sort BLOCK LIST sort SUBNAME LIST sort的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUB ...

  4. sort函数降序排列matlab,详解Matlab中 sort 函数用法

    (1)B=sort(A) 对一维或二维数组进行升序排序,并返回排序后的数组,当A为二维时,对数组每一列进行排序. eg: A=[1,5,3],则sort(A)=[1,3,5] A=[1,5,3;2,4 ...

  5. sort函数用法详解

    用于C++中,对给定区间所有元素进行排序.头文件是#include <algorithm> sort函数进行快速排序,时间复杂度为n*log2n,比冒泡之类的要省时不少 Sort函数使用模 ...

  6. Sort()函数用法:比较函数写法

    sort 函数 sort函数可以三个参数也可以两个参数,必须包含头文件 #include < algorithm> using namespace std; 它使用的排序方法是类似于快排的 ...

  7. sort ascend matlab,MATLAB sort函数用法

    sort(A):对一维或二维矩阵进行升序排序,并返回排序后的矩阵:当A为二维矩阵时,对矩阵的每一列分别进行排序. sort(A,dim):对矩阵按指定的方向进行升序排序,并返回排序后的矩阵.当dim= ...

  8. sort函数用法使用lambda表达式自定义sort排序方法

    1 sort函数包含在头文件为#include<algorithm>的c++标准库中. 2 sort函数有三个参数,排序起始地址,结束地址, 排序方法(默认参数,可以不写,默认是从小到大) ...

  9. C++ sort排序函数用法

    最近在刷ACM经常用到排序,以前老是写冒泡,可把冒泡带到OJ里后发现经常超时,所以本想用快排,可是很多学长推荐用sort函数,因为自己写的快排写不好真的没有sort快,所以毅然决然选择sort函数 用 ...

最新文章

  1. Python正则表达式:match(),search(),findall()与finditer()的用法
  2. python cvxpy包安装教程
  3. ValueError: check_hostname requires server_hostname解决方法
  4. centos -bash-4.1$ 不显示用户名路径
  5. python 网络编程 问题记录
  6. 在Ext JS 6中添加本地化包
  7. what does fullScreenPageRoutes in SAP UI5 mean
  8. 每个 Linux 用户都应该知道的命令行技巧
  9. java项目内存使用率过高排查_项目内存或者 cpu 占用率过高如何排查
  10. 【HTML+CSS网页设计与布局 从入门到精通】第6章-标题h1,h1字体格式的设置方式
  11. 大数据的特性优势有哪些
  12. Scala中I/O类使用详细解析
  13. 简述java工厂模式详解_JAVA 设计模式之 工厂模式详解
  14. ttf字体转换成woff2网页字体快捷方法
  15. 李一男起伏人生如高速过山车 栽大跟头后还回得来吗
  16. IE浏览器 请求报304,解决办法 设置页面禁止缓存
  17. Erlang中的fun函数使用详解
  18. java thread yield()_Java Thread yield()方法
  19. 二手闲鱼源码 php 如何搭建
  20. 计算机网络基础课后习题,《计算机网络技术基础》课后习题参考答案

热门文章

  1. SQL Server2008_R2企业版64位的安装教程
  2. 在TensorFlow中实现文本分类的CNN
  3. 2021-8-12这篇关于Promise用法的标题我不知道怎么起了
  4. Windows Dpi 缩放
  5. c语言小数加整数输出%d,printf以%d输出浮点数
  6. 无衍射贝塞尔光束的生成
  7. java 钩子线程_JAVA HOOK(钩子)线程介绍
  8. (实验七)Hadoop集群安装之安装数据仓库Hive
  9. 1、Hive数据仓库——概念及架构
  10. c语言比例法颜色,颜色空间RGB与 色调、饱和度、亮度(ESL)转换的完整C语言算法...