【OI】C++STL初步 排序与检索
从紫皮书过来的,但是书中内容讲的比较简洁,做一点补充笔记。
一、排序(sort函数)
头文件:<algorithm>
语法:sort(start,end,cmp);
start,end必须,cmp不必须。
参数
(1)start表示要排序数组的起始地址;(2)end表示数组结束地址的下一位;(3)cmp用于规定排序的方法,可不填,默认升序。
二、搜索(bound类)
在从小到大的排序数组中,
lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
在从大到小的排序数组中,重载lower_bound()和upper_bound()
lower_bound( begin,end,num,greater<type>() ):从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
upper_bound( begin,end,num,greater<type>() ):从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。
---------------------
作者:brandong
来源:CSDN
原文:https://blog.csdn.net/qq_40160605/article/details/80150252
就lower_bound来看,他寻找的是第一个大于等于x的数,那么找不到的情况即使有返回也不一定是正确的。所以要返回头重新判断一下。
int p = lower_bound(a,a+n,x) - a; //此时得到下标
if (a[p] == x) ....
大概是这样了,不全。等以后遇到再补充。
最新文章
- css实现div,文字水平居中的方案。
- 将list集合的元素按照添加顺序的倒序进行排列取出
- 解决安装office2013时提示已安装相同版本的office
- IOS刷新数据
- [Everyday Mathematics]20150116
- cocos2d与cocos2d-X中的draw和update
- Linux - CentOS6.5服务器搭建与初始化配置详解(上)
- android 点击下弹动画实现
- 替换NavigationController里面的返回按钮
- WIN7操作平台获取管理员权限批处理
- [原创]K8Cscan插件之端口扫描C#源码
- 【try..catch..】【判断输入是否为空】【onchange事件】【onmouseover和onmouseout事件】【onmousedown和onmouseup事件】
- 46.Scrapy框架结构
- 2017-2018-2 20155314《网络对抗技术》Exp1 PC平台逆向破解(5)M
- 树莓派使用iperf3测量网络带宽
- runtime实现weak属性
- centos删除用户出错userdel: user xxx is currently used by process 23750
- Multi account chang login with multi -thread
- 《linux内核设计与实现》第一章
- 后缀自动机(SAM)速成手册!