当前位置: 首页 > article >正文

sort函数用法与stable_sort函数

sort函数用于c++中,对给定区间所有元素进行排序,默认升序,也可以降序

头文件:#include< algorithm >

using namespace std;

语法:sort(start,end,cmp)

注意:第三个参数cmp升序情况下可以不写,降序情况需要多调用一个函数

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

例如
对a[10]数组升序排列

#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{int a[10]={9,4,5,6,7,8,9,3,2,4};sort(a,a+10);for(int i=0;i<10;i++)printf("%d ",a[i]);return 0;
}

运行结果:
在这里插入图片描述
对a[10]数组降序排列(降序需要用到第三个参数cmp,多写一个函数)

#include<stdio.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)
{return a>b;
}
int main()
{int a[10]={9,4,5,6,7,8,9,3,2,4};sort(a,a+10,cmp);for(int i=0;i<10;i++)printf("%d ",a[i]);return 0;
}

或者sort(a,a+10,greater< 类型 >( ));//头文件:#include< iostream >
运行结果:
在这里插入图片描述
假设自己定义了一个结构体node

typedef struct 
{    
int a;    
int b;    
double c;
}node;
node arr[100];

有一个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;
}

stable_sort(稳定排序函数)

与sort的区别:sort更类似于快速排序的思想,而stable_sort用得是归并排序的思路
当数据都相同时,他不会打乱原有的顺序,所以更加稳定

例如:有两个相同的数A和B,在sort排序后B有可能会跑到A的前面,但是stable_sort则不会打乱原有顺序

http://www.lryc.cn/news/2418989.html

相关文章:

  • 世界华人名人录
  • TypedArray的用法和declare-styleable:自定义控件的属性
  • 【IO】读写文件(FileInputStream、FileOutputStream、FileReader、FileWriter、RandomAccessFile)
  • 网络信息安全等级与标准_比较tcsec,cc及我国信息安全等级保护标准
  • 斗罗大陆武魂觉醒礼包码最新兑换码2024
  • 五笔字根表
  • (虚拟机)win10忘记密码重置_copy sethc,熬夜整理华为最新网络安全笔试题
  • 用移动硬盘当系统盘,即插即用
  • HTML的基本标签II
  • adns库的使用
  • JS检索下拉列表框中被选项目的索引号(selectedIndex)
  • C#报表控件ReportViewer
  • 权限表设计
  • 如何在本地设置www.xxx.com,使其允许访问
  • 解决MMC无法创建管理单元的问题!
  • 使用小马哥win10 激活工具激活后, 桌面上经常出现一个广告快捷方式的 解决方法...
  • Object-C 与C/C++的区别
  • 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你
  • 网工请自查!这十个技术问题还不会就out了
  • 使用Python Web(Django)和Bootstrap制作一款精美的“在线计算器”手把手教学——(基于Windows平台开发和部署,附完整代码和演示实例)
  • StretchDIBits函数
  • 人工智能--产生式表示法
  • VC-终止线程,ExitThread函数,TerminateThread函数,撤消线程,详解
  • eclipse-che01 安装eclipseche
  • 计算机网络自学指南,怒推荐一波,简直太全面了!
  • 小米更新显示非官方rom_魔趣ROM 安装刷入教程(小白新手)
  • 多路径软件常用操作(MPIO)
  • C语言学生成绩信息管理系统(超详细版)
  • OpenProcessToken
  • 前端框架Layui学习五:弹出层和数据表格