一.二分查找

1.binary_search:查找某个元素是否出现。

a.函数模板:binary_search(arr,arr+size ,indx)

b.参数说明:

arr: 数组首地址

size:数组元素个数

indx:需要查找的值

c.函数功能:  在数组中以二分法检索的方式查找,若在数组(要求数组元素非递减)中查找到indx元素则真,若查找不到则返回值为假。

2.lower_bound:查找第一个大于或等于某个元素的位置。

a.函数模板:lower_bound(arr,arr+size , indx):

b.参数说明:

arr: 数组首地址

size:数组元素个数

indx:需要查找的值

c.函数功能:  函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置(注意是地址)。如果所有元素都小于val,则返回last的位置

d.注意:函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置,且last的位置是越界的!

3.upper_bound:查找第一个大于某个元素的位置。

a.函数模板:upper_bound(arr,arr+size , indx):

b.参数说明:

arr: 数组首地址

size:数组元素个数

indx:需要查找的值

c.函数功能:函数upper_bound()返回的在前闭后开区间查找的关键字的上界,返回大于val的第一个元素位置.

d.注意:如果插入元素大于数组中全部元素,返回的是last。(注意:数组下标越界)

二.简单排序

1.自己编写排序

数组排序:

bool cmp(int a,int b){
return a<b; //升序排列

return a>b;//则为降序
}

结构体排序:

student
Stu[100];
bool cmp2(Student a,Student b){
    return
a.id>b.id;//按照学号降序排列
    return
a.id<b.id;//按照学号升序排列
}

2.标准库函数

升序:sort(begin,end,less<data-type>())

降序:sort(begin,end,greater<data-type>())

3.结构体重载排序

在内部重载

struct Student{
int id;
string name;
double grade;

bool operator<(const Student& s){
//return id>s.id;//降序排列
//return id<s.id;//升序排列

}

};

在外部重载

vector<Student> V;

bool operator<(const Student& s1, const
Student& s2){
//return s1.id>s2.id;//降序排列
//return s1.id<s2.id;//升序排列

}

sort(V.begin(),V.end());

注意:一定要重载<运算符,因为系统默认是降序,用的是<运算符。

最新文章

  1. 一年之计在于春,2015开篇:PDF.NET SOD Ver 5.1完全开源
  2. Python-05-常用模块
  3. JavaScript笔试必备语句
  4. projecteuler Problem 8 Largest product in a series
  5. 【动态规划】The Triangle
  6. Maven——使用Maven构建多模块项目
  7. Html辅助方法 之 Form表单标签
  8. TSC打印机使用教程终极版
  9. ReentrantLock实现原理及源码分析
  10. GitLab版本管理工具
  11. 【开发记录】如何在B/S项目中使用中国天气的实时天气功能
  12. golang异常处理
  13. 【Spring源码解析】—— 依赖注入结合SpringMVC Demo-xml配置理解
  14. java基础----&gt;java8中的函数式接口
  15. Java基础93 JDBC连接MySQL数据库
  16. 【Java】Java NIO
  17. Excel导入oracle的几种方法
  18. 哈密顿绕行世界问题(hdu2181)
  19. 条件随机场CRF HMM,MEMM的区别
  20. Java并发编程笔记之LongAdder和LongAccumulator源码探究

热门文章

  1. 请给出linux中查看系统已经登录用户的命令?
  2. 容器化之Docker小知识普及
  3. Ember报错
  4. vue回顶部 组件 可以直接使用
  5. 搭建minima主题的github博客网站
  6. 【Go】使用压缩文件优化io (二)
  7. 你所不知的spring与mybatis整合方法
  8. 02_javaSE面试题:单例设计模式
  9. Jrebel激活服务搭建
  10. 在CentOS7下搭建Hadoop2.9.0集群