zoukankan      html  css  js  c++  java
  • sort函数_C++

      C++的STL库里有一个 sort 函数,它就是随机化快速排序,速度比快速排序还快,因为它克服了逆序时被卡成O(n2)的情况

      想要使用 sort 首先要在头文件里申明 #include<algorithm> 算法文件

      比如我们有一个数组 a,对它的 1-n 进行升序排序,也就是从小到大

    1     sort(a+1,a+n+1);

      如果要对它进行降序排序,也就是从大到小,则需要手写一个比较器 cmp,它是一个 bool 类型的函数

    1 bool cmp(int x,int y)
    2 {
    3     return x>y;
    4 }

      然后排序函数要写成这样

    1     sort(a+1,a+n+1,cmp);

      后面加上一个自定义的比较器

      如果我们想带着其它数据进行排序,比如按顺序给出一些数,然后从小到大输出,并且输出时带上输入时的顺序

    1 struct data
    2 {
    3     int num,val;
    4 }
    5     a[100];

      那么我们开一个记录类型,num 代表编号,val 代表值,然后进行排序

    1     sort(a+1,a+n+1,cmp);

      重点是比较器,传入的类型是我们定义的 data 类型,然后比较里面的 val 值,最终因为记录类型的特点排序交会时会整体交换

    1 bool cmp(data x,data y)
    2 {
    3     return x.val<y.val;
    4 }

      这样排序出来后在 val 值相等时是按照 num 小的排在前面

      如果我们要以 num 大的排在前面,只需在比较时多一个条件

    1 bool cmp(data x,data y)
    2 {
    3     return ((x.val<y.val)||((x.val==y.val)&&(x.num>y.num)));
    4 }

    版权所有,转载请联系作者,违者必究

    联系方式:http://www.cnblogs.com/hadilo/p/5932395.html

  • 相关阅读:
    BZOJ3781 小B的询问
    BZOJ3757 苹果树
    BZOJ1491 [NOI2007]社交网络
    BZOJ3754 Tree之最小方差树
    BZOJ1251 序列终结者
    BZOJ2259 [Oibh]新型计算机
    BZOJ1043 [HAOI2008]下落的圆盘
    D. 预定义变量
    A. 变量命名原则
    B. PHP变量的特点
  • 原文地址:https://www.cnblogs.com/hadilo/p/5765759.html
Copyright © 2011-2022 走看看