sort 函数用法简介

STLsort函数用法简介

sort 函数,可以直接对数组排序,复杂度为 n*log2(n)。

使用这个函数,需要包含头文件 #include <algorithm>。

这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址,排序的区间是[a,b)。例:对数组 t 的第 0 到 len-1 的元素排序,就写 sort(t,t+len)。

对向量 v 排序也差不多, sort(v.begin(),v.end());

排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类 string 。

如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数----比较函数。比较函数是一个自己定义的函数,返回值是 bool 型,它规定了什么样的关系才是“小于”。想把刚才的整数数组按降序排列,可以先定义一个比较函数 cmp

bool cmp(int a,int b)

{

  return a>b;

}

排序的时候就写 sort(a,a+len,cmp)。

 

假设自己定义了一个结构体 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 return x.c>y.c;

}

排序时写 sort(arr,a+100,cmp)。

 

原文地址:https://www.cnblogs.com/lk1993/p/3193688.html