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++相关推荐

  1. 排序函数(sort、sorted、argsort、lexsort、partition、argpartition、searchsorted)

    list.sort 通过对提供的数组进行就地修改来返回已排序的数组.因此,元素数组将被修改. numpy.sort(ndarray.sort与之类似) 使用numpy.sort函数可以对数组进行排序, ...

  2. 排序函数(sort()、sorted()、argsort()函数)

    python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 1 ls = list([5, 2, 3, 1, 4]) 2 new_ls = so ...

  3. C++中sort()排序函数应用

    ** C++中sort()排序函数应用 ** sort(first_pointer,first_pointer+n,cmp) 该函数可给数组,或者链表list.向量排序. 实现原理:sort并不是简单 ...

  4. 排序函数 sort()、sorted()、argsort()函数

    sort()函数 python的内建排序函数有 sort.sorted两个.而sort ()可以直接对列表进行排序 用法:list.sort(func=None, key=None, reverse= ...

  5. c++自带的排序函数sort

    其实C语言里也有qsort排序函数,但相较于C++的sort排序函数更加繁琐,不推荐使用.下面来介绍怎么使用C++里的sort排序函数. Sort的用法 1.sort函数的使用必须加上头文件#incl ...

  6. python中从小到大排序的函数_深入理解Python中的排序函数

    由于 Python2 和 Python3 中的排序函数略有区别,本文以Python3为主. Python 中的排序函数有 sort , sorted 等,这些适用于哪些排序,具体怎么用,今天就来说一说 ...

  7. R语言数据排序函数sort, order rank实战

    R语言数据排序函数sort, order & rank实战 目录 R语言数据排序函数sort, order & rank实战 #sort vs. order vs. rank函数基础 ...

  8. python 排序函数 sort sorted 简介

    sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None: sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的 ...

  9. sort redis php,php-redis中的sort排序函数总结

    很多人把redis当成一种数据库,其实是利用redis来构造数据库的模型,有那种数据库的味道.但是在怎么构建还是key和value的关系,与真正的关系型数据库还是不一样的. 效率高,不方便:方便的,效 ...

最新文章

  1. 适用于SharePoint 2013 的 CAML Desinger
  2. 从零开始机器学习比赛经验(bird分享)
  3. 关于上个Flex-Jsp-DB例子中Flex和Jsp传递中文参数问题的解决方法!(Tomcat服务器)...
  4. 零基础实战迁移学习VGG16解决图像分类问题
  5. Scrapy练习——爬取京东商城商品信息
  6. webpack打包的两种方式
  7. java 调用SAP RFC函数错误信息集锦
  8. Python_迭代器与生成器
  9. 5年后你最想要什么?
  10. Taro+react开发(97):问答模块04
  11. SpringMVC框架使用注解执行定时任务
  12. 用子函数实现strlen.strcpy.strcat.strcmp(完整代码)
  13. MFC dialog 间 交互[2]
  14. Always On可用性组中SQL Server统计信息
  15. 分享两个Mysql在线全备和binlog日志备份脚本
  16. 0x0000011b共享打印机无法连接解决方法
  17. 面试常见逻辑题小整理
  18. FME转换CAD填充块文件为SHP,并正确显示颜色符号。
  19. 哪些事是考研前不知道,考研后才知道的?
  20. 计算机网络mac是什么意思,无线设备

热门文章

  1. Workbox.strategies v3.x 中文版
  2. 高性能并发TCP网络服务-IOCP框架修正VC2008版本
  3. windows组件向导里没有internet 信息服务(iis) 的解决办法
  4. linux 文件中搜索字符串命令 grep
  5. [react] 说说你对声明式编程的理解?
  6. React开发(247):react项目理解 学会debugger
  7. 前端学习(3284):立即执行函数三
  8. 前端学习(3160):react-hello-react之样式的模块化
  9. PS教程第二十三课:套索工具
  10. [css] 说说你对字母“X“在CSS中有什么作用?