二分查找
来源:互联网 发布:四川航空公司待遇知乎 编辑:程序博客网 时间:2024/04/29 07:25
当我们在一个数组中想查找一个数时我们通常会通过一个for循环一个一个的便利时间复杂度为(n)当数组非常大时就会出现超时,这时候用二分查找就会解决这个情况。因为二分查找的时间复杂度为(lgn)。举个例子:a[8]={1,2,3,4,5,6,7,8,9};我们目标是找到6,所以我们进行的操作为:首先找到最中间的位置即5,5<6,所以在数组{6,7,8,9}中再找;再找中间的为7,7>6.所以就在{6}中找在找最中间的为6=目标数字,即找到目标数字。
具体代码:
递归(1)
int binsearch(int a[],int low,int high,int target)
{
if(low<=hight)
{
int mid=(low+hight)/2;
if(a[mid]==target)
{
return mid;
}
else if(a[mid]>target)
{
return binsearch(a,low,mid-1,target);
}
else
{
return binsearth(a,mid+1,high,target);
}
}
else
return -1;
}
非递归(2)
int binsearth(int a[],int n,int target)
{
int low=0;
int high=n;
while(low<=high)
{
int mid=(low+high)/2;
if(a[mid]==target)
{
return mid;
}
else if(a[mid]>target)
{
high=mid-1;
}
else
{
low=mid+1;
}
}
return -1;
}
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- StoryBoard 视图切换和传值
- 页面 和 Action 中如何获取 国际化资源文件的 value值 ?
- springMVC
- 水面波纹.shader
- 重载
- 二分查找
- Git环境搭建及简单的本地、远程 两库关联
- Pragmatic Scala:Create Expressive, Concise, and Scalable Applications (读书笔记)
- [SDOI 2014] [JZOJ 3625] 旅行
- 二叉树的12大问题
- 如何判断一个js对象是否一个DOM对象
- BZOJ3521: [Poi2014]Salad Bar
- Android通用流行框架大全
- 【Android 基础】如何查看数字签名信息