二分查找
来源:互联网 发布:怎么运营淘宝直播 编辑:程序博客网 时间:2024/05/21 13:06
二分查找
一、二分查找的使用条件
二分查找又称折半查找,在有序的数据集中,依次与中间元素比较,需要获取中间元素的下标,故需要以下二个条件:
1、顺序存储数据结构
2、有序
二、二分查找实现
//二分查找(前提:arr已从小到大排序)
template<typename T> int binarySearch(T arr[],int length,T key) { int beginIndex = 0; int endIndex = length - 1; while(beginIndex <= endIndex) { //取中间元素的下标 int midIndex = (beginIndex + endIndex) >> 1; if(arr[midIndex] == key)// 中间元素等于key,查找成功 { return midIndex; } else if(arr[midIndex] > key)//中间元素大于key,只需从前半部分查找key { endIndex = midIndex - 1; } else//中间元素小于key,只需从后半部分查找key { beginIndex = midIndex + 1; }//end of else }//end of while return -1;//未找到key,返回-1 }//end of func
三、二分查找递归实现(效率较低,不推荐)
//二分递归查找(前提:arr已从小到大排序)
template<typename T> int binarySearch(T arr[],int beginIndex,int endIndex,T key) { if(beginIndex > endIndex) { return -1; } else { int midIndex = (beginIndex + endIndex) >> 1; if(arr[midIndex] == key)//中间元素等于key,返回下标 { return midIndex; } else if(arr[midIndex] > key)//中间元素大于key,递归在前半部分递归查找 { return binarySearch(arr,beginIndex,midIndex - 1,key); } else//中间元素小于key,递归在后半部分递归查找 { return binarySearch(arr,midIndex+1,endIndex,key); }//end of inner else }//end of outer else }//end of func
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- php 5 + apache + zend 配置
- read 用法
- SOJ 1689 算阶乘
- 992编号的由来
- Sgu棋盘覆盖系列
- 二分查找
- 修改郝斌老师的学生信息管理系统
- PPPOE源码分析
- HTTP常用命令(请求方法)
- linux ubuntu mysql 管理界面软件 emma 配置
- MUWork--一个基于Objective-c的AOP开发框架
- struts2.1.6乱码解决方法
- 什么是硬编码 hardcode
- C++socket编程基础总结