sort函数,我用总是莫名其妙的错

sort函数,我用总是莫名其妙的错

好像不能和#Include<stdio.h>
1.要使用sort函数只需用#include 即可使用,语法描述为:

sort(begin,end),表示一个范围,例如:

#include<bits/stdc++.h>          //万能头文件
using namespace std;
int main()
 {
  int a[20]={2,4,1,23,5,76,0,43,24,65},i;
  for(i=0;i<20;i++)
   cout<<a[i]<<endl;
  sort(a,a+20);
  for(i=0;i<20;i++)
  cout<<a[i]<<endl;
  return 0;
 }

输出结果将是把数组a按升序排序。

2.sort中增加一个参数,可升序可降序。

1)自己编写compare函数:

bool compare(int a,int b)
{

return a<b; //升序排列,如果改为return a>b,则为降序

}

2)接着调用三个参数的sort:sort(begin,end,compare)就成了。对于list容器,这个方法也适用,把compare作为sort的参数就可以了,即:sort(compare).

#include<bits/stdc++.h>
using namespace std;
bool compare(int a,int b)
       {return a>b;          //函数和语句不一样,函数一定要括起来!
     } //升序排列,如果改为return a>b,则为降序

int main()
 {
      int a[20]={2,4,1,23,5,76,0,43,24,65},i;
      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;
 }

3.标准库里已经有现成的了,就在functional里,include进来就行了。functional提供了一堆基于模板的比较函数对象。它们是(看名字就知道意思了):equal_to、not_equal_to、greater、greater_equal、less、less_equal。对于这个问题来说,greater和less就足够了,直接拿过来用:
升序:sort(begin,end,less());
降序:sort(begin,end,greater()).

int _tmain(int argc, _TCHAR* argv[])
{
      int a[20]={2,4,1,23,5,76,0,43,24,65},i;
      for(i=0;i<20;i++)
          cout<<a[i]<<endl;
      sort(a,a+20,greater<int>());
      for(i=0;i<20;i++)
          cout<<a[i]<<endl;
      return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114904.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库分区概念及简单运用

    数据库分区概念及简单运用概念:数据库分区是一种物理数据库设计技术目的:主要目的是为了在特定SQL操作中减少数据读写的总量以缩短响应时间分类:分为水平分区(HorizontalParitioning)和垂直分区(VerticalPartitioning)水平分区:是对表的行进行分区,通过这种方式不同分组里面的物理列分隔的数据集得以组合,从而进行个体分隔(单分区)或集体分隔(1个或多个分区).所有表中定义的列在米格数据集中都能找到,所以表的特性依然得以保持。例如:一个包含十年发票记录的表可以被分区为十个不同..

    2022年6月6日
    36
  • Red Hat Enterprise Linux ISO 全镜像下载

    Red Hat Enterprise Linux ISO 全镜像下载1、iso网盘下载地址:https://wanghualang.pipipan.com/dir/13133650-26232498-a8efb3/2、中国大陆开源镜像站汇总,企业贡献: 搜

    2022年7月2日
    26
  • POJ 3630 Phone List

    POJ 3630 Phone List

    2022年1月18日
    63
  • MySQL 的COUNT(x)性能怎么样?

    做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!文章目录0 说明1 总结2 拓展x 可以代表: 主键id、字段、1、*0 说明对于count(主键id)来说innodb引擎会遍历整张表,把每一行的id值都取出来,返回给server层,server层判断id值不为空,就按行累加对于count(字段)来说如果这个字段定义为not null,一行行的从记…

    2022年2月28日
    41
  • matlab fmincon优化,求教Matlab用fmincon做优化计算

    matlab fmincon优化,求教Matlab用fmincon做优化计算本人利用fmincon做优化计算,其程序如下:1,主程序clearallx0=[0.1,0.3,0.2,0.3,0.1,45,0.214,0.05,0,0.45,0.15,0,0.4,0.12,0,0,0,0,0,0,0,0,0,0,0,0];A=[1-1-110000000000000000000000;11-1-10000…

    2022年6月7日
    33
  • traceroute详解[通俗易懂]

    traceroute详解[通俗易懂]traceroute详解1.traceroute基本概念traceroute(Windows系统下是tracert)命令利用ICMP协议定位您的计算机和目标计算机之间的所有路由器。TTL值可以反映数据包经过的路由器或网关的数量,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。traceroute是一条缓慢…

    2022年6月29日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号