STL中就自带了排序函数sortsort 对给定区间所有元素进行排序  要使用此函数只需用#include <algorithm> sort即可使用,语法描述为:
sort(begin,end),表示一个范围,例子:#include <algorithm>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按升序排序,说到这里可能就有人会问怎么样用它降序排列呢?这就是下一个讨论的内容.
一种是自己编写一个比较函数来实现,接着调用三个参数的sort:sort(begin,end,compare)就成了。对于list容器,这个方法也适用,把compare作为sort的参数就可以了,即:sort(compare).

1)自己编写compare函数:
bool compare(int a,int b)
{
  return a<b; //升序排列,如果改为return a>b,则为降序
}#include <algorithm>
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;
}

//这些都是可以通过自己的改写将运算的结果输出的,然后相对来说速度更快也不容易出错。

//使用的关键点在于头文件为#include<algorithm>

//第二个就是使用的参数要自己注意,要不就是直接对数组使用,然后就是将数组的下标返回

//或者是自己重新定义一个顺序,然后将其它的东西按照顺序输出,其他的就是靠自己的使用了。

当然,最后值得庆祝的一件事情是在学长讲解了结构体使用自己定义好的函数从新对以前的序列进行排序时,我重新将今天的第二题的代码写了一下,成功的AC了而且相对与开始的代码现在已经变得简单多了,这件事情让自己很开心。虽然感觉自己一直在做水题,和别人比起来差距非常大,但是看见自己的进步就是非常开心的

#include <iostream>
#include <algorithm>
using namespace std;
//首先定义一个结构体,让自己可以在这种条件下进行操作
class tianxia{
public:
int attack;
int bonus;
};
//模仿自己定义一个cmp函数,然后就可以直接使用了,加油,就像她说的一样,继续努力
int cmp(tianxia x,tianxia y){ return x.attack < y.attack; } int main()
{
bool zhangjie = true;
int s,n;
cin>>s>>n;
//显然,现在申请一个结构体的方式来处理问题肯定会比刚刚直接使用两个数组的方式来的简单的多,自己试一试
tianxia *dig = new tianxia [n];
for(int i = 0;i < n; i++){
cin>>dig[i].attack>>dig[i].bonus;
}
sort(dig,dig + n,cmp); for(int i =0;i < n; i++ ){
if(s>dig[i].attack){s+=dig[i].bonus;}
else {cout<<"NO"<<endl;zhangjie=false;break;}
} if(zhangjie){cout<<"YES"<<endl;}
return 0;} //当然,最后很开心的采用了第二种方式,也是成功AC
运算符的重载,然后使用,代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
//首先定义一个结构体,让自己可以在这种条件下进行操作
class tianxia{
public:
int attack;
int bonus; bool operator < (const tianxia &rhs) const{
return attack < rhs.attack;}
};
//模仿自己定义一个cmp函数,然后就可以直接使用了,加油,就像她说的一样,继续努力
/*int cmp(tianxia x,tianxia y){ return x.attack < y.attack; }*/ int main()
{
bool zhangjie = true;
int s,n;
cin>>s>>n;
//显然,现在申请一个结构体的方式来处理问题肯定会比刚刚直接使用两个数组的方式来的简单的多,自己试一试
tianxia *dig = new tianxia [n];
for(int i = 0;i < n; i++){
cin>>dig[i].attack>>dig[i].bonus;
}
sort(dig,dig + n); for(int i =0;i < n; i++ ){
if(s>dig[i].attack){s+=dig[i].bonus;}
else {cout<<"NO"<<endl;zhangjie=false;break;}
} if(zhangjie){cout<<"YES"<<endl;}
return 0;
} /*struct Dragon{
int x,y;
bool operator < (const Dragon &rhs) const{
return x < rhs.x;
}
}dragon[1010]; sort(dragon,dragon+n);*/

sort函数使用的基本知识的更多相关文章

  1. STL::sort函数实现

    声明:本文参考链接:STL::sort实现. 排序是面试中经常被问及的算法基础知识点,虽然实际应用中不会直接使用,但是理解这些简单的算法知识对于更复杂更实用的算法有一定的帮助,毕竟面试总不能问的太过深 ...

  2. python:数组/列表(remove()函数、append()函数、sort()函数、reverse()函数)

    排序: 1:整理顺序 #冒泡 lista = [5,7,11,19,99,63,3,9,1] list = [] while lista != []: number = 0 for i in list ...

  3. STL sort 函数实现详解

    作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...

  4. js中函数的一些理论知识

      函数的一些理论知识 1. 函数:                执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...

  5. 神奇的sort()函数

    今天来谈一谈sort()函数,sort() 方法用于对数组的元素进行排序,用法为arrayObject.sort(sortby):括号中的为可选参数,准确来说应该是一个函数,这个函数用来规定排序方法, ...

  6. qsort函数、sort函数【转】

    http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...

  7. C中的qsort函数和C++中的sort函数的理解与使用

    一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...

  8. python 中的sort 和java中的Collections.sort()函数的使用

    x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...

  9. sort函数用法

    原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...

随机推荐

  1. JavaScript eval() 为什么使用eval()是一个坏主意 什么时候可以使用eval()

    ---------------------------------------------------------------------------------------------------- ...

  2. Django开发环境配置

    Eclipse   首先需要去Eclipse官网下载:http://www.eclipse.org/,Eclipse需要JDK支持,如果Eclipse无法正常运行,请到Java官网下载JDK安装:ht ...

  3. IDA Pro使用

    当我们的光标在某个函数处时,按回车键就可以跳到这个函数所在的位置:

  4. ListView的条目点击焦点的问题

    由于ListView条目里有ImageButton,导致抢占了条目点击事件,所以在item的跟布局中加入 android:descendantFocusability="blocksDesc ...

  5. win2008服务器,fastCGI完美设置教程

    在WIN2008的IIS7上使用FASTCGI调用PHP-CGI.EXE,默认只有4个进程,这样对于大流量的网站为说,进程数不足带来的进程排队现象十分严重,解决方案如下.32位系统 http://ww ...

  6. POJ 1789 Truck History(Prim+邻接矩阵)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cstring> #include<algo ...

  7. PHP中使用CURL(二)

    https不需要进行ca认证和证书中域名认证 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ch,CURLOPT_SSL_VE ...

  8. Rational Rose 2003 逆向工程转换C++ / VC++ 6.0源代码成UML类图

    目录 1.安装&破解Rational Rose 2003 1.1 安装Rose 2003 1.2 破解Rose 2003 1.3运行出错“没有找到suite objects.dl” 2. Ra ...

  9. spring 集成mongo配置

    spring继承Mongo使用的是spring-data. 如果需要加入两个mongo与spring集成的包,spring-data-commons-1.7.0.RELEASE.jar,spring- ...

  10. Linux下搭建ntp时间同步服务器

    1.ntpd软件安装(略过) 2.修改ntp.conf配置文件 vi /etc/ntp.conf 第一种配置:允许任何IP的客户机都可以进行时间同步将“restrict default kod nom ...