Binary Search-二分查找
来源:互联网 发布:范佩西鱼跃冲顶 知乎 编辑:程序博客网 时间:2024/04/28 05:10
90%以上的程序员无法正确无误的写出二分查找代码。- Jon Bentley
很久没写二分查找的代码,刚才很不幸发现我是上述中的90%以上的程序员里的一员。有几个要注意的点:
1. 先搞清楚要查找的区间范围,这个很重要。
2. mid = low + ((high - low) >> 1)
可防止溢出。
贴一下自己写的二分查找代码,警醒下:
#include <iostream>using namespace std;int binarySearch1(int a[], int x, int low, int high){ int mid; while (low < high) { mid = low + ((high - low) >> 1); if (x < a[mid]) { high = mid; } else if (x > a[mid]) { low = mid + 1; } else return mid; } return -1;}int binarySearch2(int a[], int x, int low, int high){ int mid; while (low <= high) { mid = low + ((high - low) >> 1); if (x < a[mid]) high = mid - 1; else if (x > a[mid]) low = mid + 1; else return mid; } return -1;}int main(){ int a[] = {1,2,3,4,6,8,10}; cout << binarySearch1(a, 4, 0, 7) << endl; cout << binarySearch2(a, 4, 0, 6) << endl; return 0;}
假设数组下标范围为0~n-1
。
对于binarySearch1
而言,查找失败时low=high
。对于binarySearch2
而言,查找失败时low=high+1
。
此时low
为0~n
之间的某个值。
0 0
- 二分查找(Binary Search)
- binary-search( 二分查找 )
- 二分查找Binary Search
- Binary Search二分查找
- 二分查找 Binary Search
- 二分查找(Binary Search)
- 二分查找 Binary Search
- Binary Search 二分查找
- Binary Search 二分查找
- Binary Search-二分查找
- 二分查找Binary Search
- 二分查找Binary Search
- 二分查找(binary search)
- 查找:二分查找(binary search)
- Binary Search 《二分查找》 1
- Binary Search 《二分查找》 2
- Binary Search 《二分查找》 3
- 漫谈二分查找-Binary Search
- iOS 启动连续闪退保护方案
- 状态模式
- securecrt中文件打包成压缩文件并下载命令
- zookeeper常见问题整理
- vim从入门到放弃
- Binary Search-二分查找
- POJ 1321 棋盘问题
- 字符串类型char
- 面向对象中的static
- 【Android】常用的android小技巧(弹框/透明/延时)
- python连接MySql数据库
- 桥梁模式
- 《疯狂程序员》有感
- mathout编译