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. asp.net 后台验证成功(弹出对话框)并跳转?不能实现

    原始 Context.Response.Write("<script></script>"); Response.Redirect(); 解决办法: Cli ...

  2. Linux常用命令汇总及使用方法(三)

    (1)文件管理命令 ls.ls -l.ll.ls -a ls -a 显示所有文件,包括隐藏文件 ls 列举指定目录下的子目录和文件 ls -l与ll相同 列举指定目录下的子目录和文件的详细信息 tot ...

  3. 获取客户端IP地址经纬度所在城市

    <?php $getIp=$_SERVER["REMOTE_ADDR"]; echo 'IP:',$getIp; echo '<br/>'; $content = ...

  4. 代码块(Block)回调一般阐述

    本章教程主要对代码块回调模式进行讲解,已经分析其他回调的各种优缺点和适合的使用场景. 代码块机制 Block变量类型 Block代码封装及调用 Block变量对普通变量作用域的影响 Block回调接口 ...

  5. Linux下nginx生成日志自动切割

    1.编辑切割日志的 shell 程序,目录自定 #vi /data/nginx/cut_nginx_log.sh 输入代码: #!/bin/bash # This script run at 00:0 ...

  6. ZOJ 1003 Crashing Balloon

    #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using ...

  7. JEMETER 录制

    两种方式: 第一种:badboy工具录制,导入jemeter脚本,导入jemeter.目测支持IE 第二种:代理服务器的方式 1.

  8. 常用类型转换 一.常用int和string类型转换

    常用类型转换 一.常用int类型转换1. int.parse(string) 这个类型只支持string类型 2.double doubleType = Int32.MaxValue + 1;   i ...

  9. 《JS权威指南学习总结--6.6属性getter和setter》

    内容要点: 一.对象属性     对象属性是由名字.值和一组特性构成的.在ES5中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和setter定义的属性称做 ...

  10. CentOS6.4安装go环境

    在官网上下载go1.6.linux-amd64.tar.gz 解压缩并拷贝程序到相应路径下 #tar -zxvf go1.6.linux-amd64.tar.gz #cp -rf go /usr/lo ...