排序专题之C++中的sort函数调用
近来看了c++标准库这本书,学到了很多,就把这其中的一点C++sort()函数的用法写下来和大家分享吧!
(一)为什么要用c++标准库里的排序函数
Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!
(二)c++标准库里的排序函数的使用方法
I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可!
II)Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
Sort函数使用模板:
Sort(start,end,,排序方法)
下面就具体使用sort()函数结合对数组里的十个数进行排序做一个说明!
例一:sort函数没有第三个参数,实现的是从小到大
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int a[10]={9,6,3,8,5,2,7,4,1,0};for(int i=0;i<10;i++)cout<<a[i]<<endl;
sort(a,a+10);for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;
}
例二
通过上面的例子,会产生疑问:要实现从大到小的排序肿么办?这就如前文所说需要在sort()函数里的第三个参数里做文章了,告诉程序我要从大到小排序!
需要加入一个比较函数 complare(),此函数的实现过程是这样的
bool complare(int a,int b)
{return a>b;
}
这就是告诉程序要实现从大到小的排序的方法!
#include<iostream>
#include<algorithm>
using namespace std;
bool complare(int a,int b)
{return a>b;
}
int main()
{int a[10]={9,6,3,8,5,2,7,4,1,0};for(int i=0;i<10;i++)cout<<a[i]<<endl;sort(a,a+10,complare);//在这里就不需要对complare函数传入参数了,//这是规则for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;
}
例三:
通过上面例一、二的方法虽然实现了从大到小和从大到小的排序,这样做还是有点麻烦,因为还需要自己编写告诉程序进行何种排序的函数,c++标准库强大的功能完全可以解决这种麻烦。
Sortt函数的第三个参数可以用这样的语句告诉程序你所采用的排序原则
less<数据类型>()//从小到大排序
greater<数据类型>()//从大到小排序
结合本例子,这样的就可以完成你想要的任何一种排序原则了#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int a[10]={9,6,3,8,5,2,7,4,1,0};for(int i=0;i<10;i++)cout<<a[i]<<endl;
sort(a,a+10,less<int>());for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;
}#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int a[10]={9,6,3,8,5,2,7,4,1,0};for(int i=0;i<10;i++)cout<<a[i]<<endl;sort(a,a+10,greater<int>());for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;
}例四:利用sort函数还可以实现对字符的排序,排序方法大同小异,下面就把程序范例展示一下
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{char a[11]="asdfghjklk";for(int i=0;i<10;i++)cout<<a[i]<<endl;sort(a,a+10,greater<char>());for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;
}
排序专题之C++中的sort函数调用相关推荐
- Linux 中使用 sort 指令分组排序详解
Linux 中使用 sort 指令分组排序详解 sort 中进行分组排序主要用到的选项为 -k,此文,我们着重于该选项的使用方式,用到的其它选项不做解释,有兴趣的同学可以查看帮助文档 1. 数据准备 ...
- 前端开发必备:js中的sort()排序函数
碎片时间学习一下这个短短的案例技巧,将来开发中肯定会用得上的. javascript中的sort()的用法也有很多种,搜索一下就有很多了,而且都不会有什么问题.但是一下这样写法更简洁易看. <s ...
- java中Collections.sort() 排序函数的用法
java中Collections.sort() 排序函数的用法: 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** ...
- python中的sort排序加换行_python中sort()排序的方法
python中sort()排序的方法 发布时间:2020-09-01 10:57:52 来源:亿速云 阅读:110 作者:小新 这篇文章主要介绍了python中sort()排序的方法,具有一定借鉴价值 ...
- http://www.dewen.net.cn/q/16222/C++排序中的sort函数第三个参数的疑问
C++排序中的sort函数第三个参数的疑问 唐图 3 票 37 #include<stdio.h> #include<string.h> #include<algorit ...
- c++简单排序算法(冒泡、选择以及调用algorithm中的sort函数)
排序 冒泡排序 定义: 概述: 冒泡排序中,在每一轮的排序中,总能把最小或是最大的一个数字排到末端,然后下一次就不再次访问这个元素,直至所有元素排列完成. 代码: for (int i = 1; i ...
- 6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分)请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。函数接口定义:void Sort( char *
6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分) 请编写函数Sort函数,将字符串中除首.尾字符外的其余字符按降序排列. 函数接口定义: void Sort( char *p ...
- Js中的Sort排序方式
Js中的Sort排序方式 这里只列出部分排序方式 1.Sort排序 Sort排序是数组内置函数,但他的排序是根据系统字符默认排序 //数组const arr = [3,4,2,3,123,35,65, ...
- Java中使用sort()进行升序降序排序
这篇文章主要介绍了详解Java sort()数组排序(升序和降序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 我们在学习 J ...
最新文章
- larvel 中的api.php_Laravel API 系列教程(一): 基于 Laravel 5.5 构建 测试 RESTful API...
- C++STL容器,你真的会用了吗?——插入、删除、遍历和查找操作性能对比——删除(精简易懂版,句句干货)
- Oil Deposit
- 全栈深度学习第7期: 研究方向这么多,哪些是有有趣又潜力的呢?
- 将整张网页存成png图片
- IT外包 OpenEIM 强调CMMI等级
- jquery数组怎么传给后台_我是如何让公司后台管理系统焕然一新的(下)封装组件...
- linux没有图形界面opcv,关于Linux/ubuntu的环境下安装OpenCV并配置Clion【全套攻略】及关于'Opencv'file not found 的问题...
- GitHub Universe 2020 强势登陆,GitCode直播已上线
- 拉普拉斯变换公式表_工程数学中的积分变换的总结
- html5-微格式-时间的格式
- CSS美化超链接样式
- Vue开发环境搭建详解
- 径向基和径向基神经网路
- 框架里面的标签采集不到怎么办_怎么做微信生态的全数据采集和打通?
- 3 FPGA时序约束理论篇之IO约束
- rk3588调试之imx415摄像头
- 用不同的用户名和密码登录网络上的共享文件夹
- SimpleDateFormat的概述
- 回路电感详细介绍(环路电感)
热门文章
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of SPb
- 华中农业大学第五届程序设计大赛网络同步赛解题报告2(转)
- 微信小程序中rpx与rem单位使用
- (25):Silverlight 2 综合实例之Live Search
- JQuery Dialog(JS模态窗口,可拖拽的DIV)
- Android学习之基础知识十一 —运用手机多媒体
- [BZOJ2958]序列染色
- Xcode7 无账号真机测试!!
- 【vue开发问题-解决方法】(八)利用axios拦截器实现elementUI中加载动画,控制加载区域
- Python升级后ssl模块不可用问题解决和浅析