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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值