二分查找(非递归JAVA)
庞果网编程英雄会上做的一道题:二分查找(非递归),和大家分享一下:
public class BinarySearchClass
{ public static int binary_search(int[] array, int value)
{
int beginIndex = 0;// 低位下标
int endIndex = array.length - 1;// 高位下标
int midIndex = -1;
while (beginIndex <= endIndex) {
midIndex = beginIndex + (endIndex - beginIndex) / 2;//防止溢出
if (value == array[midIndex]) {
return midIndex;
} else if (value < array[midIndex]) {
endIndex = midIndex - 1;
} else {
beginIndex = midIndex + 1;
}
}
return -1;
//找到了,返回找到的数值的下标,没找到,返回-1
} //start 提示:自动阅卷起始唯一标识,请勿删除或增加。
public static void main(String[] args)
{
System.out.println("Start...");
int[] myArray = new int[] { 1, 2, 3, 5, 6, 7, 8, 9 };
System.out.println("查找数字8的下标:");
System.out.println(binary_search(myArray, 8));
}
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。
}
二分查找(非递归JAVA)的更多相关文章
- 【转】Java实现折半查找(二分查找)的递归和非递归算法
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wintys.blog.51cto.com/425414/94051 Java二分 ...
- 【Algorithm】二分查找(递归实现)
二分查找(递归实现),Java 代码如下: public class BinarySearch { public static int rank(int key, int[] a) { return ...
- c++之折半查找(二分查找)递归与非递归的实现
递归实现 template<typename T> int binary_search2(const T arr[], const int left, const int right, c ...
- 经典算法二分查找循环实现Java版
二分查找 定义 二分查找(Binary Search)又称折半查找,它是一种效率较高的查找方法. 要求 (1)必须采用顺序存储结构 (2)必须按关键字大小有序排列 查找思路 首先将给定值K,与表中中间 ...
- 二分查找算法,java实现
二分查找算法是在有序数组中用到的较为频繁的一种算法. 在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间复杂度为O(n),但二分查找算法则更优,因为其查找时间复杂度 ...
- 二分查找算法的java实现
1.算法思想: 二分查找又称折半查找,它是一种效率较高的查找方法. 时间复杂度:O(nlogn) 二分算法步骤描述: ① 首先在有序序列中确定整个查找区间的中间位置 mid = ( low + ...
- 二分查找算法(JAVA)
1.二分查找又称折半查找,它是一种效率较高的查找方法. 2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列 3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位 ...
- 归并排序(非递归,Java实现)
归并排序(非递归):自底向上 public class MergeSort { /** * @param arr 待排序的数组 * @param left 本次归并的左边界 * @param mid ...
- 二分查找BinarySearch(Java)
二分查找(折半查找)BinarySearch 二分查找 一组排好顺序的数,查找其中的一个数(value)的位置,按照数组(int[] a)存放这组数据,数组的索引所指的位置就是需要查找的数,用三个变 ...
随机推荐
- mysql 监控 大批量的插入,删除,和修改
监控大批量的插入,修改和删除: mysql> insert into aaa select * from aaa; mysql> SELECT trx_id, trx_state, trx ...
- Cubieboard4卡片式电脑
Cubieboard4 also named CC-A80, is a open source mini PC or single board computer which has ultra-pow ...
- Java Arrays Tutorial (3)
Java Arrays Tutorial (3) Data types have a specific set of values. A byte cannot hold a value larger ...
- Android使用学习之画图(Canvas,Paint)与手势感应及其应用(乒乓球小游戏)
作为一个没有学习Android的菜鸟,近期一直在工作之外努力地学习的Android的使用. 这周看了下Android的画图.主要是Canvas,Paint等,感觉须要实践下.下午正好有空,就想整一个乒 ...
- PHP - 操作符与控制结构
第3章 操作符与控制结构 学习要点: 1.字符串插入 2.操作符 3.控制结构 一.字符串插入 为了给开发人员处理字符串值提供最大的灵活性,PHP为字面插入和内容插入提供了一种方法. 双引号提供了最大 ...
- protected的一些功能
java的访问限制有private.protected.public.这里只想进一步认识一下protected. 我对protected有4个疑问: 1,在相同包中,是否可以调用其它类的protect ...
- OpenProcessToken令牌函数使用方法
>GetCurrentProcessID 得到当前进程的ID OpenProcessToken得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限AdjustTokenPr ...
- oc 可变參数传递
- (id)initWithFrame:(CGRect)frame delegate:(id<SGFocusImageFrameDelegate>)delegate focusImageI ...
- EasyUI - NumberBox组件
效果: html代码: <input type ="text" id ="box"/> JS代码: $(function () { $('#box' ...
- ASP.NET - (Session)后台登陆时,判断是不是已经登陆,如果不是,跳转回登陆页
admin(小写):用户输入的账户. password(小写):用户输入的密码. 1.先将用户名和密码,存储到Session会话中. Session["Admin"] = admi ...