zoukankan      html  css  js  c++  java
  • 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)。

     

  • 相关阅读:
    ORACLE的自定义排序
    PDA上一个UDP通讯客户端
    构造
    sort()的使用
    VC2012链接mySql
    宏的一些代码
    试卷
    疑问
    代码1
    vector学习
  • 原文地址:https://www.cnblogs.com/lk1993/p/3193688.html
Copyright © 2011-2022 走看看