【排序函数讲解】sort-C++
c++标准库里的排序函数,用于对给定区间所有元素进行排序。头
文件是#include
使用 Sort()在具体实现中规避了经典快速排序可能出现的、会导
致实际复杂度退化到 o(n²)的极端情况。它根据具体情况使用不
同排序方法,效率极高。
sort 函数基本格式:
sort(首元素地址,尾元素地址的下一个地址,比较函数);
说明:排序方法可以是从大到小也可是从小到大,还可以不写第三
个参数,此时默认的排序方法是从小到大排序。
举例:下面就具体使用 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;
}
例二:从大到小排序
需要加入一个比较函数 cmp()
bool cmp(int a,int b)
{return a>b;
}
程序如下:
#include<iostream>#include<algorithm>using namespace std;bool cmp(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,cmp);//在这里就不需要对 cmp 函数传入参数了,这是规则for(int i=0;i<10;i++)cout<<a[i]<<endl;return 0;}
例三:对结构体数据排序
假设自己定义了一个结构体 node
struct node
{int a;int b;double c;
}
有一个 node 类型的数组 node arr[100],想对它进行排序:先按 a
值升序排列,如果 a 值相同,再按 b 值降序排列,如果 b 还相同,
就按 c 降序排列。就可以写这样一个比较函数:
以下是代码片段:
bool cmp(node x,node y)
{if(x.a!=y.a) return x.a<y.a;if(x.b!=y.b) return x.b>y.b;return x.c>y.c;
}
例四:对字符串的排序
如:
string str[5]={“bbb”,”abc”,”cc”,”b”,”aaaa”};
sort(str,str+5);
for (int i=0;i<5;i++)cout<<str[i]<<endl;
//依次输出 aaaa,abc,b,bbb,cc
但是,如果是想按字符串的长度对 str 进行递增排序,则先定义
cmp 函数再调用。
bool cmp(string str1,string str2)
{return str1.length()<str2.length();
}
调用:sort(str,str+5,cmp);
输出:
for(int i=0;i<5;i++)cout<<str[i]<<endl;
//依次输出 b,cc,bbb,abc,aaaa
另外,在部分题目中会看到以下字样:对*****,按输入的顺序输出。
由于sort在排序过程中不是很稳定,如果有诸如此类的要求,请把sort替换成stable_sort,即稳定排序。(如果考试禁用请无视)
转载于:https://www.cnblogs.com/moyujiang/p/11167786.html
【排序函数讲解】sort-C++相关推荐
- 排序函数(sort、sorted、argsort、lexsort、partition、argpartition、searchsorted)
list.sort 通过对提供的数组进行就地修改来返回已排序的数组.因此,元素数组将被修改. numpy.sort(ndarray.sort与之类似) 使用numpy.sort函数可以对数组进行排序, ...
- 排序函数(sort()、sorted()、argsort()函数)
python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 1 ls = list([5, 2, 3, 1, 4]) 2 new_ls = so ...
- C++中sort()排序函数应用
** C++中sort()排序函数应用 ** sort(first_pointer,first_pointer+n,cmp) 该函数可给数组,或者链表list.向量排序. 实现原理:sort并不是简单 ...
- 排序函数 sort()、sorted()、argsort()函数
sort()函数 python的内建排序函数有 sort.sorted两个.而sort ()可以直接对列表进行排序 用法:list.sort(func=None, key=None, reverse= ...
- c++自带的排序函数sort
其实C语言里也有qsort排序函数,但相较于C++的sort排序函数更加繁琐,不推荐使用.下面来介绍怎么使用C++里的sort排序函数. Sort的用法 1.sort函数的使用必须加上头文件#incl ...
- python中从小到大排序的函数_深入理解Python中的排序函数
由于 Python2 和 Python3 中的排序函数略有区别,本文以Python3为主. Python 中的排序函数有 sort , sorted 等,这些适用于哪些排序,具体怎么用,今天就来说一说 ...
- R语言数据排序函数sort, order rank实战
R语言数据排序函数sort, order & rank实战 目录 R语言数据排序函数sort, order & rank实战 #sort vs. order vs. rank函数基础 ...
- python 排序函数 sort sorted 简介
sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None: sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的 ...
- sort redis php,php-redis中的sort排序函数总结
很多人把redis当成一种数据库,其实是利用redis来构造数据库的模型,有那种数据库的味道.但是在怎么构建还是key和value的关系,与真正的关系型数据库还是不一样的. 效率高,不方便:方便的,效 ...
最新文章
- 适用于SharePoint 2013 的 CAML Desinger
- 从零开始机器学习比赛经验(bird分享)
- 关于上个Flex-Jsp-DB例子中Flex和Jsp传递中文参数问题的解决方法!(Tomcat服务器)...
- 零基础实战迁移学习VGG16解决图像分类问题
- Scrapy练习——爬取京东商城商品信息
- webpack打包的两种方式
- java 调用SAP RFC函数错误信息集锦
- Python_迭代器与生成器
- 5年后你最想要什么?
- Taro+react开发(97):问答模块04
- SpringMVC框架使用注解执行定时任务
- 用子函数实现strlen.strcpy.strcat.strcmp(完整代码)
- MFC dialog 间 交互[2]
- Always On可用性组中SQL Server统计信息
- 分享两个Mysql在线全备和binlog日志备份脚本
- 0x0000011b共享打印机无法连接解决方法
- 面试常见逻辑题小整理
- FME转换CAD填充块文件为SHP,并正确显示颜色符号。
- 哪些事是考研前不知道,考研后才知道的?
- 计算机网络mac是什么意思,无线设备
热门文章
- Workbox.strategies v3.x 中文版
- 高性能并发TCP网络服务-IOCP框架修正VC2008版本
- windows组件向导里没有internet 信息服务(iis) 的解决办法
- linux 文件中搜索字符串命令 grep
- [react] 说说你对声明式编程的理解?
- React开发(247):react项目理解 学会debugger
- 前端学习(3284):立即执行函数三
- 前端学习(3160):react-hello-react之样式的模块化
- PS教程第二十三课:套索工具
- [css] 说说你对字母“X“在CSS中有什么作用?