折半查找,二分法查找
2011-12-13 14:13
162 查看
static int binSearch(int value) { int upperBound, lowerBound, mid; upperBound = arr.Length-1; lowerBound = 0; while(lowerBound <= upperBound) { mid = (upperBound + lowerBound) / 2; if (arr[mid] == value) return mid; else if (value < arr[mid]) upperBound = mid - 1; else lowerBound = mid + 1; } return -1; }前提是这个集合是一个有序的组合,不然就不可以折半去找
折半的原理基本上就是把一个有序的集合从中间拆成两半,然后看中间序号的元素是否大于你要查找的值,如果小于就跳到后半段,从后半段的中间序号开始查
举例
想象你正在试图猜测一个朋友选出的1到100之间的数。对于你做出的每一次猜测,朋友告诉你是否猜到了正确的数字,或者你的猜测过大,又或者过小。最佳策略是选择50作为第一个猜测目标。如果猜测过大下一个你就猜25。如果50过小你再猜75。每一次猜测,你应当选择较小的范围或者较大的范围(由你的猜测是过大或过小而定)的中间点作为下一个猜测目标。只要遵守这个策略,你将最终猜到正确的数字。图4.1展示了在选定的数字是82的情况下这个方法的工作情况。
相关文章推荐
- 二分法查找(折半查找)算法学习笔记
- 折半查找(二分法查找)
- JAVA : 折半查找(二分查找、二分法)
- 查找——折半查找(二分法查找)
- 二分法查找[折半查找][Java实现]
- 有序表查找——折半查找,又为二分法
- 二分法查找(折半查找)算法学习笔记
- c语言 折半查找 (二分法查找)
- 折半查找和递归折半查找详解(二分法查找,递归二分法查找)
- 909422229__三种查找算法:顺序查找,二分法查找(折半查找),分块查找
- 可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
- Java 二分法查找
- 折半查找<二分查找>
- 有序数组的二分法查找关键字
- Java二分法查找数组元素
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找(Swift版)
- Java二分法查找
- 二分法查找(all way)
- 二分法(折半查找)
- 立此存照(12)[C++]快速排序与二分法查找及C++库函数排序