基础篇1——二分查找法
来源:互联网 发布:ios 提取数组相同元素 编辑:程序博客网 时间:2024/06/06 01:19
二分法即设头,尾,中三个变量以low,high,mid表示。mid=(low+high)/2,每次以mid对应的值进行比较,若索要查找的值>mid对应的值,则low=mid,反之high=mid。之后再以新的low,high求新的mid对应查找,直至找到。部分时候以high>=low作为条件避免重复查找。
类型一:二分法求解
例:8x^4+7x^3+2x^2+3x+6=y,输入y的值,求[0,100]的解
#include <iostream>#include<stdio.h>using namespace std;int calculate(int x){ return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;}int main(){ int y; double high=100,low=0,mid; while(cin>>y) { while(low-high<1.0e-6) / /循环至high,low近乎相等 { mid=(high+low)/2; if(calculate(mid)<y) low=mid; else high=mid; } printf("%.4lf\n",high); } return 0;}
例:例:X:待查找元素 n:元素个数 num[]单调递增数组
int high=n-1,low=0,mid;while(low<=high){ mid=(high+low)/2; if(num[mid]==x) break; if(num[mid]<x) low=mid; else high=mid;}cout<<mid<<endl;不写全了,领会即可。演示过程如下:
设num数组8 ,10 ,12 ,16,18,20,23,24,28,33,43,55 查找元素为24
low mid high
第一次比较 8 ,10 ,12 ,16,18,20, 23 ,24,28,33,43,55
low mid high
第二次比较 8 ,10 ,12 ,16,18,20, 23 ,24,28,33,43,55
low mid high
第三次比较 8 ,10 ,12 ,16,18,20, 23 , 24, 28 ,33,43,55
low mid high //num[mid]==x break;
- 基础篇1——二分查找法
- 算法——基础篇——二分查找
- Java 基础 ---二分查找法
- 查找——二分查找
- 黑马程序员——Java基础查找算法:顺序查找和二分查找
- 算法基础之查找——顺序查找和二分查找
- 黑马程序员——Java基础--冒泡、选择、二分查找
- 《算法》第一章——二分查找(基础)
- bsearch—二分查找
- 数据结构—二分查找
- Javascript—二分查找
- 递归—二分查找
- 面试基础 -- 二分查找
- 基础算法 二分查找
- 【算法基础】二分查找
- 二分查找--基础算法
- 【算法基础】二分查找
- 基础算法-二分查找
- Calendar的使用
- 微擎分页
- abap中制作word文档并排版打印SAPscript
- ORA-00099: warning: no parameter file specified for ASM instance
- Java获取数据库的表中各字段的字段名等相关信息-很详细
- 基础篇1——二分查找法
- 01Java概述
- Java学习集锦
- Python多线程
- Android 开源框架Universal-Image-Loader 基本介绍及使用
- JAVA人学习ios swift(笔记)
- iOS --- 通过CPU实现的简单滤镜效果
- Remove Nth Node From End of List
- 美图秀秀专利---偏色检测算法研究