package com.hym.test.algorithms;
public class BinarySerch {
int[] arrayTest = { 1, 2, 5, 9, 23, 26, 46, 62, 783 };
public int searchByCycle(int theFindNum) {
int length = arrayTest.length;
int begin = 0;
int end = length - 1;
while (true) {
int middle = (begin + end) / 2;
if (arrayTest[middle] == theFindNum) {
return middle;
} else if (begin > end) {
return length;
} else {
if (theFindNum < arrayTest[middle]) {
end = middle - 1;
} else if (theFindNum > arrayTest[middle]) {
begin = middle + 1;
}
}
}
}
public int searchByRecursive(int theFindNum, int begin, int end) {
int middle = (begin + end) / 2;
if (arrayTest[middle] == theFindNum) {
return middle;
} else if (begin > end) {
return arrayTest.length;
} else {
if (theFindNum < arrayTest[middle]) {
end = middle - 1;
} else if (theFindNum > arrayTest[middle]) {
begin = middle + 1;
}
return searchByRecursive(theFindNum, begin, end);
}
}
public static void main(String[] args) {
BinarySerch search = new BinarySerch();
System.out.println(search.searchByRecursive(9, 0,
search.arrayTest.length - 1));
}
}
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
http://baike.baidu.com/view/610605.htm
分享到:
相关推荐
java算法之二分查找法的实例详解 本文主要介绍了java算法之二分查找法的实例详解,包括二分查找法的原理、Java实现、时间复杂度等相关内容。 一、原理 二分查找法的原理是基于有序数组的查找算法,假定查找范围为...
二分查找:分别使用Java和Python实现二分查找算法 二分查找:分别使用Java和Python实现二分查找算法 二分查找:分别使用Java和Python实现二分查找算法 二分查找:分别使用Java和Python实现二分查找算法 二分查找:...
Java二分查找递归算法
以下是一个简单的 Java 二分查找算法示例: ```java public class BinarySearchDemo { public static int binarySearch(int[] array, int target) { if (array == null || array.length == 0) { return -1; } ...
### Java二分查找算法知识点详解 #### 一、二分查找算法概述 二分查找算法是一种在有序数组中查找特定元素的搜索算法。其工作原理是通过将目标值与数组中间元素进行比较来缩小搜索范围,进而达到快速查找的目的。...
在Java中实现二分查找,首先需要一个已排序的数组。在提供的代码示例中,我们有一个名为`sortedArray`的整数数组,包含一系列递增的数值。目标是查找特定的`target`值。 `binarySearch`方法是实现二分查找的核心。...
经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找.zip 经典Java笔试算法解析和代码:二分查找...
Java 二分查找是搜索有序数组中某个元素的最常用算法之一。它的实现原理是将数组分成两个部分,然后在其中一个部分继续进行搜索,直到找到目标元素或确定目标元素不存在。下面将详细介绍 Java 二分查找的实现技术。 ...
二分查找算法是一种高效的数据搜索方法,主要应用于已排序的序列。它的基本思想是通过不断地将待搜索区域减半来快速定位目标值。这个过程基于分治策略,将大问题分解为更小的子问题来解决。在二分查找算法中,每次...
在编程领域,二分查找(Binary Search)是一种高效地在有序数组或集合中搜索特定元素的算法。这个算法充分利用了数组的线性特性,通过不断缩小搜索范围来找到目标值。下面我们将深入探讨Java实现二分查找的具体步骤...
本代码是利用java语言实现基本数据查询功能,实现算法为二分查找法
二分查找法,又称折半查找法,是计算机科学中一种高效的搜索算法,尤其适用于已排序的数据集合。在Java中,二分查找法通常用于数组...以上就是关于Java中实现二分查找法的详细解析,希望对你理解和应用此算法有所帮助。
根据给定的文件信息,我们可以总结出几种在Java中实现的...以上算法在Java中的实现涵盖了从简单到复杂的查找技术,包括线性查找、二分查找以及基于树的数据结构查找,为程序员提供了多种选择,以适应不同场景下的需求。
这个问题可以通过多种算法来解决,而这里给出了三种不同的方法,它们可能包括顺序查找、二分查找以及更高效的算法。 1. **顺序查找**:最直观的解法是遍历整个序列,逐个比较每个元素与它的应有位置(例如,如果...
在Java编程中,文件读取、数组操作、选择排序以及二分查找是常见的编程任务,它们涉及了IO流、数据结构和算法等多个方面。以下是这些知识点的详细解释: 1. **文件读取**:Java提供了丰富的IO流类库用于读取文件。...
二分搜索算法,又称为折半查找,是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组分成两半,每次比较中间元素与目标值,然后根据比较结果决定是在左半部分还是右半部分继续搜索。这个过程一直持续到...
public class 二分查找 { 二分查找(int N,int M,int[]a){ int min = 0, max = 0,mid,temp; for(int i=0;i;i++){ if(min[i]) min=a[i]; max+=a[i]; } mid=(min+max)/2; temp=test(N,mid,a); while(min){ ...
该工具包含有Java一些比较常见的排序算法和查找算法。 排序算法包括:冒泡排序、选择排序 、插入排序、希尔排序、快速排序、归并排序、基数...查找算法包括:线性查找、二分查找、插值查询、斐波那契(黄金分割法)、
本文将详细介绍非递归实现的二分查找算法,并通过一个Java程序进行示例说明。 首先,我们要明确二分查找的前提条件:待查找的数组必须是有序的,通常为升序排列。如果数组无序,那么二分查找将无法正常工作。接下来...
二分查找算法是一种在有序数组中查找特定元素的搜索算法,具有较高的效率。它的核心思想是利用数组的中间元素作为参照,通过比较目标值与中间元素的关系,不断缩小搜索范围,直到找到目标值或者确定目标值不存在。在...