sort()函数
1、语法
Sort(start,end,cmp)
要使用sort(),需要包含头文件。
#include <algorithm>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
(1)start表示要排序数组的起始地址;迭代器的起始位置,对于数组来说就是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。
(2)end表示数组结束地址的下一位;迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。
(3)cmp用于规定排序的方法,可不填,默认升序。迭代器的结束位置,即首地址加上数组的长度n(代表尾地址的下一地址)。
2、函数示例
示例一:
sort函数没有第三个参数,实现的是从小到大(升序)排列:
1 #include<iostream>
2 #include<algorithm>
3 using namespace std;
4 int main()
5 {
6 int a[10]={9,6,3,8,5,2,7,4,1,0};
7 for(int i=0;i<10;i++)
8 cout<<a[i]<<endl;
9 sort(a,a+10);//指针
10 for(int i=0;i<10;i++)
11 cout<<a[i]<<endl;
12 return 0;
13 }
示例二:
这就如前文所说需要在sort()函数里的第三个参数了,告诉程序要从大到小排序。需要加入一个比较函数compare(),此函数的实现过程如下:
bool compare(int a,int b)
{
return a>b;
}
这就是告诉程序要实现从大到小的排序的方法。
1 #include<iostream>
2 #include<algorithm>
3 using namespace std;
4 bool compare(int a,int b)
5 {
6 return a>b;
7 }
8 int main()
9 {
10 int a[10]={9,6,3,8,5,2,7,4,1,0};
11 for(int i=0;i<10;i++)
12 cout<<a[i]<<endl;
13 sort(a,a+10,compare);//在这里就不需要对compare函数传入参数了
14 for(int i=0;i<10;i++)
15 cout<<a[i]<<endl;
16 return 0;
17 }
有一个node类型的数组node arr[100],想对它进行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b还相同,就按c降序排列。就可以写一个比较函数:
struct node
{
int a;
int b;
double 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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律