二分算法
来源:互联网 发布:湖北航天信息开票软件 编辑:程序博客网 时间:2024/05/01 00:11
二分算法的感想及其实现
二分算法其实是一种思想,在某些情况下是有二进制成分在里面的,比如快速幂的实现。不过二分最常用来在一个有序序列中求特定值。当然这个序列必须是有序的,就是不递减或者不递增的序列,为什么要这样,了解一下二分的原理就知道了,在这里不再叙述,或者看一下接下来的代码就清楚了。
在这里主要叙述一下基本的代码框架,前提假设整个序列是递增的(其他情况类似):
假设递增序列a[n],我们的任务就是找出元素k的在数组中的下标值(默认序列中含有目标值k)。那我们声明一个变量int l=0,r=n-1;l表示寻找过程中的左下标,r表示寻找过程中的右下标,再声明一个变量 int mid=(l+r)/2;这里体现着二分的思想,如果a[mid]<k;那么r=k-1;否则l=k+1;如果找到直接返回下坐标。
下面是简单的示例代码:
int erfen(k){ int l=0,r=n-1; int mid; while(l<r) { mid=(l+r)/2; if(a[mid]==k) return mid; else if(a[mid]>k) r=mid-1; else l=mid+1; } if(a[l]==k) return l; else return -1;}
0 0
- 二分算法
- 二分算法
- 二分算法
- 二分算法
- 二分算法
- 二分算法
- 二分算法
- 二分算法
- 二分算法
- [算法]二分查找算法
- 算法----二分查找算法
- 二分查找算法
- [算法]有序二分查找
- 二分查找算法
- 常用算法- 二分查找
- 贪婪算法---二分覆盖
- C#二分搜索算法
- C 二分查找算法
- es6 新特性
- Tutorial on Axiomatic Set Theory
- kiki's game
- poj 3159 Candies 【简单差分约束】 【SPFA + 数组模拟栈】
- C++析构函数的自动调用问题
- 二分算法
- 静下心准备保研复试和工作的面试
- Jsp/Servlet 基础
- “小懒虫”安卓手机控制电脑关机
- HDU 5303 Delicious Apples(DP + 贪心)
- SQL基础
- hdu杭电1865 1sting
- Spark RDD详解
- [cogs 963]随机数生成器