`
kevin_in_java
  • 浏览: 30461 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

二分查找,迭代和递归,java实现

阅读更多

直接上代码,递归式

 

package cn.edu.cqupt.serach;

public class HarfSearch {
	public static int search(int[] array,int start,int end,int target)
	{
		int middle = (start+end)/2;
		if(target==array[middle])
			return middle;
		/*
		 * 当数列只剩两个元素时{start,end}
		 * 由于middle每次都等于start,故做特殊判断
		 * 
		 */
		if(end==start+1)
			if(target==array[end])
				return end;
			else
				return -1;
		if(target<array[middle])
			return search(array,start,middle,target);
		if(target>array[middle])
			return search(array,middle,end,target);
		return -1;
	}
	public static void main(String args[])
	{
		int array[]={1,100};
		int result= search(array,0,array.length-1,1);
		System.out.println(result);
	}
}

 

 

迭代式

package cn.edu.cqupt.serach;

public class Search {
	public static  int halfSearch(int[]array,int target)
	{
		int start= 0;
		int end =array.length-1;
		while(end>start+1)
		{
			int middle=(start+end)/2;
			if(target==array[middle])
				return middle;
			if(target<array[middle])
				end=middle;
			else
				start=middle;
		}
		if(target==array[end])
			return end;
		if(target==array[start])
			return start;
		return -1;
	}
	public static void main(String args[])
	{
		int array[]={1,6,8,9,33,45,98,100};
		int result = halfSearch(array,1);
		System.out.println(result);
	}
}

 

分享到:
评论

相关推荐

    java递归的排序和查找

    1. **二分查找**:二分查找是针对有序数组的一种高效查找算法。在Java中,递归版本首先确定中间元素,如果目标值等于中间元素,则查找成功;若目标值小于中间元素,则在左半部分递归查找,反之在右半部分查找。 2. ...

    Java实现二分查找算法实例分析

    二分查找算法是一种在有序数组中查找特定元素的搜索算法,具有较高的效率。它的核心思想是利用数组的中间元素作为参照,通过比较目标...在Java编程中,无论是递归还是循环实现,二分查找都是一个值得学习和实践的技能。

    二分查找的Java程序.docx

    Java 中有两种实现二分查找的方法,一种是使用递归函数,另一种是使用迭代函数。递归函数的实现方式是,将数组分成两半,然后递归地调用自身,直到找到目标元素或搜索范围为空。迭代函数的实现方式是,使用循环来...

    数据结构与算法(JAVA篇)之递归算法(二)

    本文将探讨递归算法中的一个重要应用——二分查找,并对比递归与非递归两种实现方式。 ##### 递归的概念介绍 递归是一种算法设计策略,它通过将问题分解成较小的子问题来解决问题。递归算法的特点在于函数调用自身...

    java 几种查找算法

    根据给定的文件信息,我们可以总结出几种在Java中实现的...以上算法在Java中的实现涵盖了从简单到复杂的查找技术,包括线性查找、二分查找以及基于树的数据结构查找,为程序员提供了多种选择,以适应不同场景下的需求。

    经典算法问题的java实现<二>

    如果代码涉及搜索,它可能会实现二分查找,或者更复杂的方法,如深度优先搜索或广度优先搜索。 3. **图论算法**:Dijkstra算法用于找到图中两点之间的最短路径。如果`TypicalCode1.java`与图有关,可能涉及到邻接...

    java实现算法的代码

    在Java中,我们可以利用循环或递归实现二分查找。 6. **图论算法的Java实现**:如Dijkstra算法用于寻找图中两点间的最短路径,Prim算法或Kruskal算法用于求最小生成树。这些都需要用到优先队列和邻接矩阵或邻接表来...

    大整数算法和二分搜索算法 Java

    对于二分搜索,要理解其迭代或递归实现方式,以及如何正确处理边界条件。同时,结合Java的相关API,可以有效地解决实际问题。 在实际编程中,我们还需要关注错误处理和异常处理,确保程序的健壮性。例如,大整数...

    数据结构JAVA实现

    有序二叉树常用于快速查找、插入和删除操作,例如二分查找。在Java中,可以使用`TreeNode`类表示二叉树节点,然后通过递归或迭代的方式来实现这些操作。有序二叉树的优点在于它的平衡特性,可以实现高效的查找算法,...

    java-数据结构代码实现

    9. **查找算法**:如二分查找、哈希查找等,这些算法在处理大规模数据时能显著提高效率。 10. **递归与迭代**:在实现数据结构时,递归和迭代是常见的编程技巧。例如,递归在解决树遍历、回溯问题时非常有用。 11....

    java实现的决策树算法

    提供的`DecisionTree`压缩包文件可能包含了实现这些功能的Java源代码和示例数据,供你参考和学习。 总之,Java实现的决策树算法是一个涉及数据处理、特征选择、节点划分和模型优化的过程。理解并掌握这些核心概念,...

    二分搜索 java 标题不够长

    在Java中,我们可以用递归或迭代的方式来实现二分搜索。以下是两种方法的示例代码: **递归实现:** ```java public int binarySearchRecursive(int[] arr, int target, int left, int right) { if (left &gt; right)...

    经典常用算法 Java和C语言两种实现

    - **二分查找**:适用于有序数组,每次比较中间元素,缩小搜索范围。Java和C语言的实现需考虑边界条件和递归/循环逻辑。 3. **动态规划**: - **斐波那契数列**:通过递归或迭代方式计算数列的每一项。两种语言...

    Java实现二分查找的变种

    在Java中,我们可以利用递归或循环来实现二分查找。本文将深入探讨一种二分查找的变种,即如何在有序数组中找到目标值的第一个出现位置。 首先,让我们回顾一下普通二分查找的工作方式。假设我们有一个升序排列的...

    折半查找法,也称为二分查找法.pdf

    在给出的Java代码示例中,`BinarySearch`类包含了`binarySearch`函数,该函数实现了二分查找算法。首先,函数定义了两个指针`left`和`right`,分别表示查找范围的起始和结束索引。初始时,`left`指向数组的第一个...

    JAVA 实现数据结构

    3. **bin_sort**: 二分排序,是一种基于比较的排序算法,它利用了二分查找的思想。在Java中实现二分排序可以帮助理解如何优化排序过程,尤其是在大数据集上的性能。 4. **dijkstra**: 这很可能是Dijkstra最短路径...

    二分搜索演示程序(数据结构课程设计)

    在Java中,二分搜索可以被实现为一个递归或迭代的方法。这个课程设计可能包含了这两种实现方式,以便用户能够比较它们的优劣。递归版本简洁明了,而迭代版本则通常被认为在性能上更优,因为它避免了函数调用的开销。...

    数据结构与算法-单路递归 Single Recursion

    虽然二分查找算法通常是通过循环来实现的,但从本质上讲,它的递归性质很明显:每次迭代都会将问题规模减半,并且只关注剩余的部分。这种特性使得二分查找非常适合用递归的方式来表达,尤其是当涉及到边界条件处理时...

    BinarySearchNoRecur_java编程_

    在这个主题中,我们将深入理解非递归的二分查找实现,并通过Java编程语言来探讨其具体细节。 非递归的二分查找通常包含以下几个步骤: 1. **初始化边界**:首先,我们需要定义两个指针,一个指向数组的起始位置...

    基于二分排序法时间复杂度的求解过程.pdf

    由于在有序序列中查找效率较高,二分查找排序法通过递归或迭代方式,将待查找序列不断对半分,直到找到目标数据或确定数据不存在。 通过分析二分查找排序法的时间复杂度,我们可以确定其在不同数据规模下的性能表现...

Global site tag (gtag.js) - Google Analytics