【基础算法】二分法查找
2014-01-23 21:11
489 查看
如果序列A已经排好序,就可以将该序列的中点与v进行比较,根据比较结果,原序列A中的一半就不用再进一步考虑了,二分查找算法重复此操作,每次都将剩余的部分规模减半(分治法的思想)。
二分法查找的最坏情况运行时间为Θ(lgn)。
代码如下:
二分法查找的最坏情况运行时间为Θ(lgn)。
代码如下:
#include <stdio.h> int Recurbinary (int * a,int p,int r,int v); int main () { int a[9]={1,2,3,4,5,6,7,8,9}; int v=2; int re; re=Recurbinary(a,0,8,v); if(re==-1) { printf("no find"); } else { printf("find the number %d in %d\n",v,re); } return 0; } //p为数组的下限,r为数组的上限,v为要查找的值 int Recurbinary (int * a,int p,int r,int v) { int mid; if(p>r) { return -1; } mid=(p+r)/2; if(a[mid] == v) { return mid; } else if(v>a[mid]) { return Recurbinary(a,mid+1,r,v); } else { return Recurbinary(a,0,mid-1,v); } }
相关文章推荐
- 基础算法——查找(二分法)(python)
- 基础算法之二分法查找
- C基础算法之二分法查找
- 查找算法之二分法查找(JAVA)
- 算法基础6:二叉树查找
- 算法导论2.3-5二分法查找问题
- Python基础----二分法查找
- 常用算法(冒泡排序、二分法查找)
- 基础算法-查找:线性索引查找(II)
- php 基础算法之 二分查找
- 算法基础(一)——冒泡,简单选择排序,二分查找
- 算法--二分法查找
- 算法代码实现之二分法查找,Java实现
- 基础算法之二分查找总结
- 二分法查找算法 (递归)
- 二分法快速查找算法
- 算法学习--二分法查找
- 基础算法学习(01)-二分查找
- 算法--二分法查找数字
- 算法学习之查找(顺序、二分法、排序二叉树以及 Hash 表)