`

Java中的二分法查找算法

 
阅读更多

[ 什么是二分查找 ]

二分查找又称为折半查找,该算法的思想是将数列按序排列,采用跳跃式方法进行查找,即先以有序数列的中点位置为比较对象,

如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。以此类推不断缩小搜索范围。


[ 二分查找的条件 ]

二分查找的先决条件是查找的数列必须是有序的。


[ 二分查找的优缺点 ]

优点:比较次数少,查找速度快,平均性能好;

缺点:要求待查数列为有序,且插入删除困难;

适用场景:不经常变动而查找频繁的有序列表。


[ 算法步骤描述 ]

① 首先确定整个查找区间的中间位置 mid = (min + max)/ 2

② 用待查关键字值与中间位置的关键字值进行比较:

i. 若相等,则查找成功;

ii. 若小于,则在前半个区域继续进行折半查找;

iii.若大于,则在后半个区域继续进行折半查找;

③ 对确定的缩小区域再按折半公式,重复上述步骤。

④ 最后得到结果:要么查找成功,要么查找失败。折半查找的存储结构采用一维数组存放。


[ Java实现 ]

public class BinarySearch {
	public static int binarySearch(int[] arr, int target) {
		if (arr != null) {
			int min, mid, max; 
			min = 0; // the minimum index
			max = arr.length - 1; // the maximum index
			while (min <= max) {
				mid = (min + max) / 2; // the middle index
				if (arr[mid] < target) {
					min = mid + 1;
				} else if (arr[mid] > target) {
					max = mid - 1;
				} else {
					return mid;
				}
			}
		}
		return -1;
	}
	
	// test case
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 5, 6, 7, 8, 9, 23, 34 };
		System.out.println(binarySearch(arr, 5));
		System.out.println(binarySearch(arr, 23));
		System.out.println(binarySearch(arr, 0));
		System.out.println(binarySearch(arr, 35));
	}
}






分享到:
评论

相关推荐

    java算法——二分法查找

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

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

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

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

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

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

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

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

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

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

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

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

    二分法查找是一种常用的查找算法,也称为折半查找。...总之,二分法查找是一种常用的查找算法,适用于有序数组中查找某个元素的位置。通过将待查找区间缩小一半的方式,可以快速地定位目标元素,时间复杂度为O(log n)。

    百度java面试查找算法代码

    总的来说,这个问题涉及到了基本的查找算法和数学思维,是考察Java开发者基础素质的一个经典例子。对于面试者来说,不仅要熟练掌握各种查找算法,还要懂得如何根据具体问题选择最优解。在分析和比较不同解法时,应...

    Java常用排序算法源码

    在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,使得数据按照特定规则(如升序或降序)排列。以下是对Java中几种常见排序算法的...

    Java JDK 二分法 分析demo(推荐)

    Java JDK 二分法分析demo是一个实用的二分法查找算法的实现,通过该demo可以了解二分法的基本思想和实现方式。下面是对该demo的详细分析: 标题解析 该标题“Java JDK 二分法分析demo(推荐)”表明该demo是一个...

    二分法查找

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

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

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

    java 二分法算法的实例

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

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

    二分法查找又称折半查找,是一种在有序数组中查找某一特定元素的搜索算法。查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或...

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

    Java 中二分法查找是一种高效的查找算法,通过将查找范围不断缩小,来快速地找到目标元素。下面将详细介绍 Java 中二分法查找的应用实例。 二分法查找的原理 二分法查找的原理是将数组分成两部分,对其中的一部分...

    Java 二分法检索算法代码实现详解

    Java 二分法检索算法是一种高效的搜索算法,它可以快速地在有序数组中查找特定的元素。该算法的基本思想是将数组分成两半,并将目标元素与中间元素进行比较,以确定目标元素的位置。 Java 二分法检索算法主要有两种...

    二分法查找数组

    本文将从二分法查找的基本概念出发,逐步解析其在数组中的应用,进而理解为何它能实现高效的查找效率。 ### 二分法查找基本原理 二分法查找,又称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其核心...

    《Java数据结构和算法》学习笔记(1)——数组 二分法 大O表示法

    在编程领域,特别是Java开发中,理解和掌握数据结构与算法是至关重要的。本文将深入探讨《Java数据结构和算法》学习笔记的第一部分,主要聚焦于数组、二分法以及大O表示法。这些基础知识对于提升代码性能和优化解决...

    分别用递归和非递归方法实现二分查找算法 的完整程序

    分别用递归和非递归方法实现二分查找算法 的完整程序,indexof()返回的是循环实现的二分法查找,getindex()实现的是递归算法实现的二分法查找。

    java 二分查找法的实现方法

    这段代码中,`binarySearch`函数实现了二分查找算法,`main`函数中给出了一个测试用例。 4. **适用场景**: 二分查找法适用于已排序的数组或列表,如在大量数据中快速定位特定值,或者在数据库索引中查找数据等。...

Global site tag (gtag.js) - Google Analytics