`
lhkzyz
  • 浏览: 347970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java二分法查找

阅读更多

二 分查找是一种高效率线性表的查找算法。在查找时必须将线性表中的关键字排好序。基本思路是:先确定线性表的中间位置 mid=(first+last)/2;比较所要查找的关键字 key与中间位置的关键字的大小,如果比key和mid.key相等则返回; key比mid.key大(假定为升序)这所要查找的关键字在mid和last之间;否则在first与mid之间。继续按照上面方法查找中间元素,直到 找到为止。
具体实现如下

public class BinarySearch {

public BinarySearch() {
super();
}

/**
* Java二分法查找
* @param a
* @param key
* @return
*/
public static int binarySearch(int[] a, int key) {
if(a.length==0)
return -1;
//开始位置
int first = 0;
//结束位置
int last = a.length-1;
//中间位置
int mid;
//如果开始时,小于则结束.
while(first<=last)
{
mid = (first+last)/2;
//如果等于key,返回这个数在数组中的位置.
if(a[mid]==key)
return mid;
//如果大于key,则在左边.
if(a[mid]>key)
last = mid-1;
//如果小于key,则在右边
if(a[mid]<key)
first = mid+1;
}
return -1;
}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={1,3,4,5,8,7,9,11,15};
System.out.println(binarySearch(a,9));
}

}

 

这样就打印出了所要查找的关键字所在位置的下标。对二分查找求平均查找长度二分查找的过程相当与一棵二叉排序树,所以总节点数为n=2^h- 1,h=Log2 (n+1)。 第i层上的节点数为2^(1-1);在等概率的情况下,平均查找长度ASL=Log2 (n+1)-1。

1
0
分享到:
评论
3 楼 于风华 2012-09-20  
binarySearch
mcdowell123 写道
这个还用自己写吗  java 都封装好了 java.util .Collections 类中就有 binarySearch 方法 直接用就好了、

当然可以用这个,但是有时候自己写的东西自己心里有谱  哈哈  同时也可锻炼一下嘛
2 楼 mcdowell123 2012-09-12  
这个还用自己写吗  java 都封装好了 java.util .Collections 类中就有 binarySearch 方法 直接用就好了、
1 楼 于风华 2012-09-12  
first+last可能越界,改成first+(last-first)/2除二 最保险

相关推荐

    java 二分法查找案例与数组排序案例.docx

    ### Java 二分法查找与数组排序案例分析 #### 数组排序案例 在Java中,对数组进行排序是一项常见的操作,通常我们有两种排序方式:升序(从小到大)和降序(从大到小)。下面我们将分别介绍这两种排序方法的具体...

    java算法——二分法查找

    二分法查找 *进行二分法查找的前提是数组已有序 *查找范围的上下界

    Java二分法查找数组元素.zip

    二分法查找是一种常用的查找算法,也称为折半查找。它适用于有序数组中查找某个元素的位置。二分法查找的思路是将数组分成两部分,每次查找都将待查找区间缩小一半,直到找到目标元素或者待查找区间为空为止。 ...

    java实现二分法查找出数组重复数字

    java二分法查找出数组重复数字是java编程语言中的一种常见算法,用于查找数组中的重复数字。在本文中,我们将详细介绍java实现二分法查找出数组重复数字的方法,并提供了具体的代码实现。 二分法查找是一种常见的...

    Java二分法查找_动力节点Java学院整理

    Java二分法查找是一种高效的搜索算法,适用于已排序的数组或列表。这个算法利用了数组的有序性,通过不断缩小查找范围来快速定位目标值。以下是关于Java二分法查找的详细说明: **基本思想** 二分查找的核心在于...

    Java程序设计基础:一维数组应用查找二分法查找).pptx

    ——二分法查找 目录 课程导入 1 清楚并牢记二分法的实现条件 2 理解二分法的实现思路 3 读懂二分法的实现代码 数组的查找——二分法查找 也称拆半查找法,是一种高效的查找方法,前提条件是数组元素必须已经按升序...

    java 冒泡算法和插入法排序,二分法查找

    本文将深入探讨Java中的冒泡排序、插入排序以及二分法查找这三种基础算法,这些都是面试时经常会被问到的技术点。 首先,让我们从冒泡排序开始。冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次...

    java 中二分法查找的应用实例

    下面是一个简单的 Java 实现二分法查找的示例代码: ```java public class BiSearch { public static void main(String[] args) { new BiSearch().biFind(new int[]{1, 2, 3, 4, 5, 6, 7}, 3); } public void ...

    冒泡排序、快速排序和二分法查找的分析 Java

    ### 冒泡排序、快速排序和二分法查找的分析:Java实现 #### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列...

    二分法查找

    二分法查找,又称折半查找,是一种在有序数组中搜索特定元素的高效算法。它利用了数组的线性特性,每次将待搜索区域减半,直到找到目标元素或者确定不存在为止。这种方法大大减少了查找所需的平均时间复杂度,是...

    写出二分法查找算法函数实现。

    ### 二分法查找算法详解 #### 一、引言 二分法查找(Binary Search),也称为折半查找,是一种在有序数组中查找特定元素的高效算法。它的工作原理是通过将查找区间不断地对半分来缩小查找范围,直至找到目标元素或...

    Java常用高效8大排序算法与二分法查找

    本文将深入探讨Java中常用的八大排序算法以及二分法查找,旨在帮助算法爱好者和开发人员提升解决问题的能力。 首先,让我们来看Java中的八大排序算法: 1. 冒泡排序:这是一种简单的排序方法,通过重复遍历待排序...

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    本资料包聚焦于"Java常用排序算法"和"程序员必须掌握的8大排序算法",并深入探讨了"二分法查找"这一高效搜索技术。 首先,我们来看八大排序算法。这些算法包括: 1. **冒泡排序**:最简单的排序方法,通过不断交换...

    二分法查找数组

    在探讨“二分法查找数组”这一主题时,我们深入解析了其算法原理、实现细节以及性能优势。本文将从二分法查找的基本概念出发,逐步解析其在数组中的应用,进而理解为何它能实现高效的查找效率。 ### 二分法查找基本...

    二分法 文件写入读出

    对于文件读出,我们可以先读取文件中的所有数据到内存,比如一个ArrayList,然后使用二分法查找特定值。这样可以快速定位到目标数据,提高效率。 在Java中,生成随机数可使用`java.util.Random`类。例如,我们可以...

    java 二分法算法的实例

    Java 二分法算法是一种高效的查找算法,用于在已排序的数组中查找特定的元素。下面是 Java 二分法算法的实例,介绍了二分法算法的实现方法和原理。 二分法算法的原理 二分法算法的原理是将数组分为三部分,依次是...

    Java使用二分法进行查找和排序的示例

    本文将详细介绍如何在Java中使用二分法进行查找和排序。 首先,我们来看二分查找算法。二分查找的基本思想是通过不断将待查找区域减半来快速定位目标值。这个过程通常在有序数组中进行。假设我们有一个已排序的数组...

    浅谈二分法查找和原始算法查找的效率对比

    在本文中,我们使用Java语言实现了二分法查找和原始算法查找,并使用System.currentTimeMillis()方法来计算算法的运行时间。实验结果表明,二分法查找的效率远远高于原始算法查找,尤其是在大规模数据集查找时。因此...

    JAVA 折半查找 实验代码

    JAVA 数据结构二分法查找代码。(实验)

Global site tag (gtag.js) - Google Analytics