ACM中常用的函数

为什么我们要用到sort()函数呢?因为在参加比赛以及平时练习的时候为了达到最优的算法复杂度以及不容易出错,所以一般我们在需要用到排序的时候我们一般都选择了直接调用函数,而不是像刚开始学C语言那样去写一个冒泡排序或者是写一个选择排序,这样的话不仅效率低下,而且容易写错,并且兼容性不好(比如一个结构体,或者一个类,一个字符串)。所以我们选择使用sort函数
 
 
C++中的sort()函数
头文件#include <algorithm> 
 
 
 
Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址的下一地址)
(3)( 可选参数)   第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。
Sort函数使用模板:
Sort(start,end,排序方法)

一般大小为n的数组排序arry[n]:

sort(arry,arry+n);    默认的排序是从小到大,如果需要从大道到小的话需要自己写一个函数当做sort()的第三个参数:

自己编写compare函数:
bool compare(int a,int b)
{
  return a<b; //升序排列,如果改为return a>b,则为降序
}
int main()
{
  int a[20]={1,3,35,55,,1,3,1,215};
  for(i=0;i<20;i++)
  cout<<a[i]<<endl;
  sort(a,a+20,compare);
  for(i=0;i<20;i++)
  cout<<a[i]<<endl;
  return 0;
}.

如果需要对类,结构体排序的话也是自己写出排序的方法:

int cmp(Node p1,Node p2){  
	//起始点从小到大排列 
    if(p1.b<p2.b) return 1;  
    //如果起始点相同的话,按照终止点从小到大排列 
    else if(p1.b==p2.b&&p1.e<p2.e) return 1;  
    return 0;  
}  

sort(a,a+n,cmp);
//这样就可以根据自己的需要来指定排序打顺序




猜你喜欢

转载自blog.csdn.net/qq_37788081/article/details/80021053
今日推荐