Sort排序用法

Sort排序用法

使用sort函数 简单、方便,c++一种排序方法之一 ,排序方法是类似于快排的方法

但是实际运用过程需要我们做一些变形

于是 写下这篇笔记,以便后来复习

1.Sort函数使用模板

Sort(start,end,cmp)

头文件为

#include

Sort函数有三个参数:

(1)第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量

(2)第二个参数相对较好理解,即首地址加上数组的长度n**(代表尾地址的下一地址) **

(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序

2.使用Sort函数

  1. 不指定第三个参数

    int a[10]={9,6,3,8,5,2,7,4,1,0};
    sort(a,a+10);//指针

    此时 默认从小到大排序

  2. 实现从大到小排序

    需要加入一个比较函数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函数传入参数了  
  3. 结构体 排序

    有一个结构体 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值降序
    }

    若要升序,第一个的值 小于 第二个

    若要降序,第一个的值 大于 第二个

  4. 还可以对结构体的比较运算符 重载

    1. 结构体内部重载

      typedef struct node{
          int a;
          int b;
          double c;
          
          bool operator<(const node& n )
          {
              return a<n.a
          }
      }Node;

      这里 不能写 const Node& n 可能是 这前面 没有 Node

    2. 结构体外部重载

      bool operator<(const Node& n1,const Node& n2)
      {
          return n1.a<n2.b;
      }

      这里可以 写 const Node& n1,const Node& n2

你可能感兴趣的:(Sort排序用法)