二分查找(非递归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)存放这组数据,数组的索引所指的位置就是需要查找的数,用三个变 ...
随机推荐
- Oracle查看表空间使用情况
查看表空间使用情况 select upper(f.tablespace_name) "表空间名", d.tot_grootte_mb "表空间大小(m ...
- SQLServer分页查询存储过程
项目中用到的SQLServer分页查询存储过程. [存储过程] create PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage int = 1, ...
- Android bitmap序列化
最近在开发中需要用到图片bitmap的序列化并进行传递,发现bitmap是没有序列化的,下面是自己实现的一个序列化方法,分享下. 以下是通过byte[]来进行序列化的,因为bitmap是没有序列化的, ...
- 不用SWIG,Go使用C++代码的方式
将C++代码用C作一次封装,就可以让Go调用了. 这是一个C++头文件: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #ifndef CGO_CPPGO_C ...
- perl encode_utf8必须用在utf8环境
[root@wx03 mojo]# cat test.pl use Mojolicious::Lite; use JSON qw/encode_json decode_json/; use Encod ...
- Android面试题收集(有具体答案)
Android面试题目及其答案 1.Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每个Android应用程序都在它自己的进程中执行,都 ...
- EasyUI - 后台管理系统 - 增加,删除,修改
效果: html代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ad ...
- 删除workspace下的vss的scc文件
public class DeleteAA { public static void main(String[] args) { DeleteAA aa=new DeleteAA(); aa.dele ...
- 基于visual Studio2013解决C语言竞赛题之1067间隔排序
题目 解决代码及点评 /* 功能:间隔元素排序.用随机函数产生25个[25,75]之间的整数, 把它送到一维数组M中. 要求对M[I],M[I+J],M[I+2*J],-这些元 ...
- 基于jquery-easyui的仓库管理系统
使用jQuery EasyUI创建的仓库管理系统包括系统管理.数据维护.业务单据管理等,有兴趣可以对其进行修改扩展. 数据库采用MYSQL, 帐号/密码:root/root,演示登录帐号/密码:adm ...