准确实现二分查找方法
2014-12-10 11:29
323 查看
准确实现二分查找方法
准确写出二分查找法很重要,因为其中有许多地方容易出错。
主要有下面几点:
right初始值为num-1;
每次更新right=middle-1;
每次更新middle为left+((right-left)>>1); 注意使用移位,以及移位运算符加括号!
正确的程序如下:
准确写出二分查找法很重要,因为其中有许多地方容易出错。
主要有下面几点:
right初始值为num-1;
每次更新right=middle-1;
每次更新middle为left+((right-left)>>1); 注意使用移位,以及移位运算符加括号!
正确的程序如下:
#include<iostream> using namespace std; int isFinded(int *a, int num, int value) { int left=0, right=num-1; int middle; while(left<=right) { middle=left+((right-left)>>1); if(a[middle] < value) left=middle+1; else if(a[middle] > value) right=middle-1; else return middle; //返回找到的位置 } return -1; //没找到 } int main() { int a[5]={1, 3, 5, 7, 9}; int num=5; int value=5; int finded=isFinded(a, num, value); cout<<finded<<endl; return 0; }
相关文章推荐
- 使用c语言指针和递归方法实现二分查找
- Collections.sort方法实现Comparator比较器进行二分查找
- 三种方法实现二分查找
- [整理]二分查找搜索算法原理及递归,迭代方法实现
- 使用递归和非递归两种方法实现二分查找!!!
- 二分查找的几种方法对比,C++实现
- 一个可能存在Bug的二分查找方法的实现,大家一起看看有什么问题没
- 二分查找的两种实现方法
- C语言经典算法(九)——递归实现二分查找的两种方法
- 三种方法实现二分查找
- 二分查找的两种实现方法
- php二分查找的两种实现方法
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- VB 中遍历目录,遍历目录查找文件的2个实现方法(挺好)
- 二分查找的C++实现
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 查找算法集:顺序查找、二分查找、插值查找、动态查找(数组实现、链表实现)
- 如何C#中实现在TreeView查找某一节点(两种方法)