Sort排序用法
使用sort函数 简单、方便,c++一种排序方法之一 ,排序方法是类似于快排的方法
但是实际运用过程需要我们做一些变形
于是 写下这篇笔记,以便后来复习
1.Sort函数使用模板
Sort(start,end,cmp)
头文件为
#include<algorithm>
Sort函数有三个参数:
(1)第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量
(2)第二个参数相对较好理解,即首地址加上数组的长度n**(代表尾地址的下一地址) **
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序
2.使用Sort函数
-
不指定第三个参数
int a[10]={9,6,3,8,5,2,7,4,1,0}; sort(a,a+10);//指针此时 默认从小到大排序
-
实现从大到小排序
需要加入一个比较函数compare()
bool compare(int a,int b) { return a>b; } int a[10]={9,6,3,8,5,2,7,4,1,0}; sort(a,a+10,compare); //在这里就不需要对compare函数传入参数了 -
对 结构体 排序
有一个结构体 Node
struct node { int a; int b; double c; }先按a值升序排列,如果a值相同,再按b值降序排列,如果b还相同,就按c降序排列
bool cmp(node x,node y) { if(x.a!==y.a) return x.a<y.a; //a值升序 if(x.b!==y.b) return x.b>y.b; //b值降序 return x.c>y.c; //c值降序 }若要升序,第一个的值 小于 第二个
若要降序,第一个的值 大于 第二个
-
还可以对结构体的比较运算符 重载
-
结构体内部重载
typedef struct node{ int a; int b; double c; bool operator<(const node& n ) { return a<n.a } }Node;这里 不能写 const Node& n 可能是 这前面 没有 Node
-
结构体外部重载
bool operator<(const Node& n1,const Node& n2) { return n1.a<n2.b; }这里可以 写 const Node& n1,const Node& n2
-
4114





