三种二分
来源:互联网 发布:嵌入式linux驱动开发 编辑:程序博客网 时间:2024/04/30 06:23
二分法能在O(nlogn)的时间复杂度内在一堆有序排列的数内找到一个点,假设这这堆数被放在一个数组里
,不同的题意二分是可以变的,总结三种:
1.在有序数组a[100]里查找一个数p,说明这堆数里存在这个数p,所以就是一个正常的查找过程,代码如下(这里从第一项开始):
int E_F(int p,int *a){ int Left=1,Right=100,mid; while(Left<=Right) { mid=(Right+Left)/2; if(a[mid]==p) return mid; else if(a[mid]<p) Left=mid+1; else Right=mid-1; } return Left;}
2.有序数组找一个刚好与p接近并且大于p的数:int E_F(int p,int *a){ int Left=1,Right=100,mid; while(Left<Right) { mid=(Right+Left)/2; if(a[mid]==p) return mid; else if(a[mid]<p) Left=mid+1; else Right=mid; } return Left;}
3.有序数组找一个刚好与p接近并且小于p的数:
int E_F(int p,int *a){ int Left=1,Right=100,mid; while(Left<Right) { mid=(Right+Left+1)/2; if(a[mid]==p) return mid; else if(a[mid]<p) Left=mid; else Right=mid-1; } return Left;}
这是三种模板,并且其中的循环条件即(Left<Right)里的是否加上等于号,可以手动模拟一下在去判断是否加等号。这里不再解释。 0 0
- 三种二分
- 二分查找的三种写法
- 三种方法实现二分查找
- lower_bound二分的三种写法
- 二分查找的三种实现
- 二分查找的三种方式
- 二分答案三连发
- 二分变量之二——二分变量预测结果的三种表达
- 经典案例,二分查找的三种实现方式
- 数组(随机生成,三种排序,二分查找)
- 三种插入排序的分析(直接插入-二分插入-Shell排序)
- 二分查找突破上下限,树状数组的三种应用。
- C实现三种插入排序-简单插入排序、二分插入排序、希尔插入排序
- Codeforces Round #408 (Div. 2)-C. Bank Hacking-(三种方法)分类讨论,二分,集合
- POJ 2503 Babelfish 字典树经典题 三种方法 (map,排序+二分,字典树)
- 三种常用的插入排序算法--直接插入排序、二分插入排序、希尔排序
- 三种静态查找算法:顺序、二分/折半、索引/分块查找
- 排序算法三:二分插入排序
- TCP三次握手和backlog参数
- 小学生成绩管理系统
- 一段神奇的代码
- 小学生考试系统
- 有道云笔记启动时出现问题
- 三种二分
- ARM的六大类指令集---LDR、LDRB、LDRH、LDM、STR、STRB、STRH、STM
- PAT-甲级-1004
- Centos MySQL 5.7 安装、升级详细教程
- 手工爱好网站
- Android学习笔记--Gson笔记
- LeetCode 408. Valid Word Abbreviation
- php四种基础算法:冒泡,选择,插入和快速排序法
- LinuxCentOS安装图文详解