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题的时候,排序是一种经常要用到的操作.如果每次都自己 ...
随机推荐
- qtp childObjects用法
ChildObjects: Returns the collection of child objects contained within the object. F1帮助解释:返回当前调用对象的所 ...
- win7提示Xshell5提示缺少msvcp110.dll解决办法
下载地址: http://www.microsoft.com/zh-CN/download/details.aspx?id=30679 X86和X64的都下载下来,安装好后重启计算机,就OK了
- 第四章 android 命名规范和编码规范
书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google ...
- Hierarchyid(层次结构)数据类型
实例表结构 CREATE TABLE [dbo].[Emp]( ,), ), [Org] [hierarchyid], ) INSERT INTO Emp(Name,Org) VALUES('吴xx' ...
- 2、变量var关键字
我们在看js声明变量的时候,经常会发现有的变量前会带var 但又的则没有,那么这究竟有什么区别呢? 如果这种情况发生在函数里的话, 加var定义的变量是局部变量,不加var定义的就成了全局变量. // ...
- js--事件对象的理解4
阻止默认行为:1.实例-简易修改右键菜单<script>document.oncontextmenu=function (ev){ var oEvent=ev||event; var oU ...
- ValidationMessageFor验证
一,在modle下的自己新建的PowerViewModel.cs下编辑错误显示 public class PowerViewModel { [Required( ErrorMess ...
- iOS开发瀑布流的实现
//自定义布局,继承于UICollectionViewLayout #import <UIKit/UIKit.h> @class WaterFlowLayout; @protocol W ...
- js函数的一些技巧
1 函数的引用可以直接通过函数名来调用 bind: function (fn, scope) { return function () { return fn.apply(scope, argumen ...
- MySQL(2)-数据类型和Schema
一.数据类型 只介绍基本的数据类型. MySQL中选择合适的数据类型还是很有必要的,下面是一些通用原则: 小的就是好的 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快, ...