`

Java基础:二分法查找

    博客分类:
  • JAVA
阅读更多
package find;

/*
 * 注意,进行二分法查找必须要将被查找的集合或数组先进行排序
 */
public class ErFenFa {
	public static void main(String[] args) {
		int[] iArray = { 4, 12, 23, 33, 45, 53, 65, 78, 88, 90 };
		// 要查找的值
		int seek = 33;
		// 类似于指针的东西
		int index = 0;
		// 查找起始下标
		int start = 0;
		// 查找结束下标
		int end = iArray.length - 1;
		// 计数器
		int count = 0;

		while (true) {
			count++;
			// 初始化数组中间值的下标
			// 原来为index = (start + end) / 2;当start + end的值超过了最大的正int值的时候, index 会变成负值,这个时候就会抛出异常.故改为这样    
			index = start + ((end - start) / 2);
			if (iArray[index] < seek) {
				start = index;
			} else if (iArray[index] > seek) {
				end = index;
			} else {
				break;
			}
		}
		System.out.println(" 二分法查找,需要比较的次数:" + count);
	}
}
分享到:
评论
2 楼 sc_1028 2007-12-11  
多谢提示,确实有您说的问题,我已更改,谢谢支持
1 楼 lighter 2007-12-11  
sc_1028 写道
package find;
/*
 * 注意,进行二分法查找必须要将被查找的集合或数组先进行排序
 */
public class ErFenFa {
	public static void main(String[] args) {
		int[] iArray = { 4, 12, 23, 33, 45, 53, 65, 78, 88, 90 };
		// 要查找的值
		int seek = 33;
		// 类似于指针的东西
		int index = 0;
		// 查找起始下标
		int start = 0;
		// 查找结束下标
		int end = iArray.length - 1;
		// 计数器
		int count = 0;

		while (true) {
			count++;
			// 初始化数组中间值的下标
			index = (start + end) / 2;
			if (iArray[index] < seek) {
				start = index;
			} else if (iArray[index] > seek) {
				end = index;
			} else {
				break;
			}
		}
		System.out.println(" 二分法查找,需要比较的次数:" + count);
	}
}

楼主给的程序有bug,问题出在:
index = (start + end) / 2;
当start + end的值超过了最大的正int值的时候, index 会变成负值,这个时候就会抛出异常..
改为这样
index = start+ ((end - start) / 2);

相关推荐

    java算法——二分法查找

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

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

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

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

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

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

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

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

    接下来,我们讨论二分法查找: 二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于...

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

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

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

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

    二分法查找

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

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

    以下是一个完整的 Java 示例代码,展示了如何使用二分查找: ```java import java.util.Arrays; public class BinarySearchExample { public static void main(String[] args) { Integer[] array = {1, 2, 3, 4,...

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

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

    二分法查找数组

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

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

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

    Java程序设计基础:一维数组应用查找线性查找).pptx

    二分法查找 数组的查找——线性查找 也称顺序查找法,基本思想: 11 22 43 90 4 90 56 49 -10 3 0 1 2 3 4 5 6 7 8 9 将要查找的对象(关键字key)与数组中每个元素逐一比较,如果某一元素值与关键词key相等,则表示...

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

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

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

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

    java 二分查找法的实现方法

    在Java中,二分查找法通常用于数组或有序列表中,其核心思想是通过不断缩小搜索范围来快速定位目标元素。以下是关于Java实现二分查找法的详细解释: 1. **算法原理**: 二分查找法首先将数组或列表分为左、中、右...

    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 数据结构二分法查找代码。(实验)

    【JAVA基础】【算法】冒泡排序_优化排序,二分法查找_折半检索

    二分法查找,也称为折半检索,是一种在有序数组中查找特定元素的搜索算法。其基本思想是将查找区间不断减半,直到找到目标值或确定目标值不存在。具体步骤如下: 1. 将数组中间元素的关键码与给定值key进行比较。 2...

Global site tag (gtag.js) - Google Analytics