sort函数使用的基本知识
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函数使用的基本知识的更多相关文章
- STL::sort函数实现
声明:本文参考链接:STL::sort实现. 排序是面试中经常被问及的算法基础知识点,虽然实际应用中不会直接使用,但是理解这些简单的算法知识对于更复杂更实用的算法有一定的帮助,毕竟面试总不能问的太过深 ...
- 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 ...
- STL sort 函数实现详解
作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...
- js中函数的一些理论知识
函数的一些理论知识 1. 函数: 执行一个明确的动作并提供一个返回值的独立代码块.同时函数也是javascript中的一级公民(就是函数和其它变量一样). 2.函数的 ...
- 神奇的sort()函数
今天来谈一谈sort()函数,sort() 方法用于对数组的元素进行排序,用法为arrayObject.sort(sortby):括号中的为可选参数,准确来说应该是一个函数,这个函数用来规定排序方法, ...
- qsort函数、sort函数【转】
http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
- python 中的sort 和java中的Collections.sort()函数的使用
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...
- sort函数用法
原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...
随机推荐
- Mysql基础知识整
web项目部署 Java项目使用的web服务器:Tomcat.weblogic.webshare.jetty Php.python使用的web服务器:nginx.apache 搭建环境过程: 部署.发 ...
- MapReduce库类
Hadoop除了可以让开发人员自行编写map函数和reduce函数,还提供一些常用函数(mapper.reducer和partitioner)的类库,这些类位于 org.apache.hadoop.m ...
- vs2008编译FileZilla客户端源码
vs2008编译FileZilla客户端源码 下载FileZilla客户端源码,下载地址https://download.filezilla-project.org/. FileZilla客户端解决方 ...
- 5个可用提高Godaddy主机速度的第三方CDN加速服务商
毕竟Godaddy主机数据中心位于美国.新加坡.欧洲三个数据中心,一般我们都会选择美国数据中心,相比较其他2个机房的速度是快和稳定的,很多人要说为什么新加坡数据中心速度不好呢?因为目前的新加坡机房不是 ...
- Mac MySQLdb模块安装,可算解决了
转载:http://blog.csdn.net/janronehoo/article/details/25207825 短评:这篇文章感觉是比较全面解决Mac MySQLdb模块安装问题的文章了,特别 ...
- Activity生命周期方法调用finish后的不同表现
今天宿舍一个哥们出去面试遇到了这个面试题:"在activity oncreate()调用finish()"生命周期是怎么样的? 我赶紧写了些demo,发现确实很有趣: packag ...
- MySQL设置binlog日志的有效期自动回收
设置日志保留天数,到期后自动删除 查看当前日志保存天数: show variables like '%expire_logs_days%'; 默认是0,即永不过期. 通过设置全局参数修改: set g ...
- Spring Security(11)——匿名认证
目录 1.1 配置 1.2 AuthenticationTrustResolver 对于匿名访问的用户,Spring Security支持为其建立一个匿名的AnonymousAuthe ...
- apache 安装mod_rewrite
如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以.如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在ap ...
- 单击dbgrid列标题排序 升降序
delphi中如何通过单击列标题进行升降排序, 在dbgrid的ontitleclick事件里添加这样的事件处理 procedure TForm3.DBGrid1TitleClick(Column: ...