`
bo_hai
  • 浏览: 564674 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

二分查找的两种实现方法

 
阅读更多

二分查找又名折半查找法,实现思路可以到网上找到,在此就不在说了。二分查找有两种实现方法,一种方法是:使用循环遍历,结束条件是:low > high;另一种方法是:使用递归,结束条件也是:low > high。代码如下:

public class BinarySearchTest {

	public static void main(String[] args) {
		int arr[] = new int[10];
		int data = -1;
		for (int i = 1; i <= 10;i++) {
			arr[i - 1] = i; 
		}
		SortUtil.showArr(arr);
		System.out.println(binarySearch(arr,data));
		System.out.println(binarySearch(arr,0,arr.length - 1,data));
	}
	
	/**
	 * 循环实现
	 * @param arr
	 * @param data
	 * @return
	 */
	public static int binarySearch(int[] arr ,int data){
		int low = 0,high = arr.length - 1,index = -1;
		while (low <= high) {
			int mid = (low + high)/2;
			if (arr[mid] == data) {
				index = mid;
				break;
			} else if (arr[mid] > data) {
				high = mid - 1;
			} else if (arr[mid] < data) {
				low = mid + 1;
			}
		}
		return index;
	}
	
	/**
	 * 递归实现
	 * @param arr
	 * @param data
	 * @return
	 */
	public static int binarySearch(int[] arr,int low,int high,int data) {
		int mid = (low + high)/2;
		if (arr[mid] == data) {
			return mid;
		} else if (low <= high && arr[mid] > data) {
			return binarySearch(arr,low,mid - 1,data);
		} else if (low <= high && arr[mid] < data) {
			return binarySearch(arr,mid + 1,high,data);
		} else {
			return -1;
		}
	}
}

 使用到的工具类:SortUtil 代码如下:

public final class SortUtil {
	private SortUtil(){};
	
	public static void showArr(int[] arr) {
		for (int i : arr) {
			System.out.print(i);
			System.out.print('\t');
		}
		System.out.println();
	}
}

 

1
2
分享到:
评论

相关推荐

    二分查找算法

    例如,在上述代码中,二分查找算法的实现使用了递归函数,函数BinarySearch将数组Elements分成两个部分,然后根据查找的元素是否在某一部分中,继续对该部分进行二分查找,直到找到该元素或确定该元素不存在于数组...

    C++ 二分查找的实现

    ### C++ 二分查找的实现 #### 一、引言 在计算机科学中,**二分查找**(也称为**折半查找**)是一种在有序数组中查找特定元素的有效算法。...希望本文能帮助读者更好地理解二分查找算法及其在C++中的实现方法。

    二分查找的实现

    在实现二分查找时,通常有两种方法:递归和迭代。递归方式更加直观,而迭代方式则可能更节省空间。下面分别对这两种方式进行详细讲解。 1. 递归实现: 递归实现二分查找的代码如下: ```python def binary_search_...

    二分查找_测试

    二分查找,也被称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续查找。这个过程会一直重复,直到...

    二分查找和二叉排序树(C++实现)

    二分查找和二叉排序树是计算机科学中两种重要的数据结构和算法,它们在处理大量数据时具有高效性。下面将详细介绍这两种概念及其C++实现的关键点。 首先,二分查找是一种在有序数组中查找特定元素的搜索算法。其...

    查找算法集(顺序查找、二分查找、插值查找、动态查找)

    二分查找是一种高效的查找算法,它的实现方式是将数组或链表分成两个部分,然后比较目标元素和中间元素,如果目标元素小于中间元素,则在左半部分继续查找,否则在右半部分继续查找。二分查找的时间复杂度为O(logn)...

    二分查找的C实现

    二分查找,也称为折半查找,是一种在有序数组中搜索特定元素的高效算法。它的基本思想是将数组分成两半,然后根据目标值与中间元素的比较结果,决定是在左半部分还是右半部分继续查找。这个过程不断进行,直到找到...

    数据结构实验——查找(二分查找&顺序查找)

    一、实验目的: 熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。 二、实验要求: 1、掌握查找的基本方法。 2、提交实验报告,报告...编程分别对有序顺序表的顺序查找,二分查找算法进行实现。

    二分查找办法

    同时,了解这两种实现方式有助于我们更好地理解和改进二分查找算法,对于提升编程技能和解决复杂问题非常有帮助。 在Lecture7_BinarySearch1这个文件中,可能包含了关于这两种二分查找方法的详细讲解、示例代码和...

    一种改进的二分查找算法

    从提供的文件中,可以挖掘出关于二分查找算法以及其改进方法的详细知识点。下面对这些知识点进行详细阐述: 首先,二分查找算法是一种在有序数组中查找特定元素的高效算法。它通过比较数组中间位置的值与目标值的...

    二分查找、插值查找、斐波那契查找对比C++的实现

    本文将详细介绍三种常见的查找算法:二分查找、插值查找和斐波那契查找,并以C++语言为例,阐述它们的核心实现原理。 1. **二分查找(Binary Search)** 二分查找是一种基于有序数组的高效查找算法。它的工作原理...

    二分查找和hash表的实现

    二分查找和哈希表是两种在计算机科学中广泛使用的数据结构和算法,它们在解决查找和检索问题时有着高效的表现。这篇文档将深入探讨这两种技术的原理、实现及应用场景。 首先,我们来讨论二分查找。二分查找,也称为...

    实现二分查找的完美算法 c++

    二分查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,每次都比较中间元素与目标值,根据比较结果决定是继续在左半部分还是右半部分查找。这种方法的效率很高,因为...

    二分查找最简单教程

    二分查找的实现可以分为两种形式:迭代和递归。迭代形式通过循环来实现查找,而递归形式则是通过函数调用自身来实现。迭代形式通常在空间复杂度上更优,因为它不需要额外的栈空间。 二分查找的应用不仅限于查找元素...

    实验十二------顺序和二分查找算法

    二分查找算法是查找算法中的一种,它的基本思想是将数组分成两个部分,然后确定目标元素在哪一部分中,最后在该部分中继续查找。二分查找算法的实现方法可以使用递归结构,例如使用函数调用自身来实现二分查找。 二...

    C语言程序设计实现二分查找算法

    二分查找是一种高效的搜索算法,尤其适用于已排序的数组或列表。它通过不断将搜索区间减半来快速定位目标值,大大提高了查找效率。以下是关于二分查找算法的详细解释: 1. **设计内容** - **输入元素**:首先,...

    C++ 二分查找法

    在计算机科学领域,数据结构与算法是核心课程之一,其中二分查找法(Binary Search)是一种高效的查找技术,尤其适用于有序数组或列表的搜索场景。本文将深入探讨C++中实现二分查找法的具体细节、原理以及其在实际...

    二分查找的python实现(及相关题目)(csdn)————程序.pdf

    了解这些细节对于实现一个高效的二分查找算法至关重要。在实际编程中,根据具体问题的特点和需求,可以选择合适的区间处理方式、计算mid的方法以及出界条件判断,以确保算法的正确性和效率。同时,熟悉这些相关题目...

    算法分析与设计-实验二 二分查找实验报告.docx

    二分查找算法是一种高效的数据搜索方法,主要应用于已排序的序列。它的基本思想是通过不断地将待搜索区域减半来快速定位目标值。这个过程基于分治策略,将大问题分解为更小的子问题来解决。在二分查找算法中,每次...

Global site tag (gtag.js) - Google Analytics