二分查找
2016-03-20 21:06
211 查看
【二分查找】前提:在一个已序的空间中查找注意:查找边界条件情况一:左闭右开 【 ),右边界始终无法取到假如前开后闭空间 【left,right),比如int array[10]={0,1,2,3,4,5,6,7,8,9};【0,10)int BinarySearch (int a[],int size,int data){int left=0;int right=size;int mid=0;while(left<right)//注意此处不能去等号{mid=left + (right-left)/2;if(data<a[mid]){right=mid;}else if(data>a[mid]){left=mid+1;}else{return mid;}}return -1;}假如查找31 2 3 4 5 6 7 8 9第一次 【1,9) mid=4 a[4]>3 缩小右边界 [0,4)即直接right=mid;第二次 【0,4) mid=2 a[2]==3 退出假如找9第一次 【0,9) mid=4 a[4]<9 改变左边界[5,9)第二次 【5,9)mid=9 a[7]<9 改变左边界[8,9)第三次 【8,9)mid=8 a[8]==9 退出情况二:左闭右闭 右边界可以取到假如前开后闭空间 【left,right】,比如int array[10]={0,1,2,3,4,5,6,7,8,9};【0,9】int BinarySearch (int a[],int size,int data){ int left=0; int right=size; int mid=0; while(left<right)//注意必须加=号,比如查找最后一个元素 { mid=left + (right-left)/2; if(data<a[mid]) { right=mid-1; } else if(data>a[mid]) { left=mid+1; } else { return mid; } } return -1;}假如查找41 2 3 4 5 6 7 8 9第一次 [0,8] mid =4 a[4]>4 缩小右边界[0,3]第二次 [0,3] mid =1 a[1]<4 改变左边界[2,3]第三次 [2,3] mid=2 a[2]<4 改变左边界[3,3]第四次 [3,3] mid=3
相关文章推荐
- C++二分查找在搜索引擎多文档求交的应用分析
- C语言编程中实现二分查找的简单入门实例
- C#二分查找算法实例分析
- 二分查找算法在C/C++程序中的应用示例
- 在MySQL中实现二分查找的详细教程
- Java实现二分查找算法实例分析
- Python二分查找详解
- 简介二分查找算法与相关的Python实现示例
- 漫谈递归:二分查找算法的递归实现
- 二分查找
- [LeetCode] Find Minimum in Rotated Sorted Array
- 折半查找法
- "二分查找(Binary Search)"与"斐波那契查找(Fibonacci Search)"
- 二分查找
- C#版二分查找(代碼)
- 4495: Least Prime factor 找到最小质因子P的第N小正整数
- 使用Java完成《算法导论》习题2.3-5
- 使用Java完成《算法导论》习题2.3-6
- 使用Java完成《算法导论》习题2.3-7
- Sort Colors,Search in Rotated Sorted Array I,II,Merge Intervals,Insert Interval,Subsets II