Java中二分查找算法(binarysearch)的工作原理是怎样的?

2026-05-28 09:501阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计938个文字,预计阅读时间需要4分钟。

Java中二分查找算法(binarysearch)的工作原理是怎样的?

这篇文章主要介绍了Java中的binarysearch方法原理,并通过示例代码进行了详细解释。对于想要学习或工作的朋友们来说,这是一份非常有价值的参考资料。

首先,数组排序是使用binarysearch方法的前提。在Java中,可以使用import java.util.Arrays;语句来导入数组排序的相关类。

以下是一个简单的binarysearch方法示例:

javapublic class BinarySearchExample { public static void main(String[] args) { int[] arr={1, 3, 5, 7, 9, 11}; int key=7; int index=binarySearch(arr, key); if (index !=-1) { System.out.println(Element found at index: + index); } else { System.out.println(Element not found in the array); } }

public static int binarySearch(int[] arr, int key) { int low=0; int high=arr.length - 1; while (low <=high) { int mid=(low + high) / 2; if (arr[mid]==key) { return mid; } else if (arr[mid]

这个示例中,我们首先定义了一个有序数组arr和一个要查找的key值。然后,我们调用binarySearch方法来查找key在数组中的位置。如果找到了,就返回索引;如果没有找到,就返回-1。

对于想要进一步学习的读者,binarysearch方法在Java的Arrays类中也有直接的支持,可以通过Arrays.binarySearch(arr, key)方法直接调用,这样更加方便和简洁。

总之,binarysearch方法是一种高效的查找算法,对于学习或工作都有一定的参考价值。希望这篇简短的介绍对大家有所帮助。

这篇文章主要介绍了Java binarysearch方法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java中二分查找算法(binarysearch)的工作原理是怎样的?

首先 数组排序需要import java.util.Arrays类

binarysearch有两个用法,一个是在整个数组里搜索,一个是在指定范围搜索,其实都是差不多的,可以将前者视为后者的特殊情况。

用法1

binarySearch(Object[], Object key)

Object是目标数组,key是目标值,要求目标数组必须要经过排序的,否则无法找到正确的结果

查询无非就是两种结果,一种是目标值在目标数组里,另一种是不在

所以返回值也分为正负两种,目标值在目标数组内的,返回下标(如果有多个相同的,无法确定找到的是哪个,因为是二分搜索)

目标值不在数组内的,返回 -(第一个大于目标值的元素的下标+1),类似的,如果数组内的值都比目标值小,则是返回-(数组长度+1)

样例:

import java.util.Arrays; public class number { public static void main(String[] args) { int a[] = new int[] {1, 3, 4, 6, 8, 9}; int x1 = Arrays.binarySearch(a, 5); int x2 = Arrays.binarySearch(a, 4); int x3 = Arrays.binarySearch(a, 0); int x4 = Arrays.binarySearch(a, 10); System.out.println(x1+" "+x2+" "+x3+" "+x4); } }

输出:

-4 2 -1 -7

也可以这么理解:

对应相应的位置输出即可。

用法2

binarySearch(Object[], int fromIndex, int toIndex, Object key)

加了两个int变量,代表区间的开始和结束,从fromindex(包含)到toindex(不包含)这个区间里面搜索,返回值和前面用法1类似,唯一有所不同的是,当如果区内的值都比目标值小,则是返回-(toindex+1),如果区间内的值都比目标值大,则返回-(fromindex+1),仔细想想不难理解,用法1就相当于fromindex为0且toindex为数组长度的用法2。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计938个文字,预计阅读时间需要4分钟。

Java中二分查找算法(binarysearch)的工作原理是怎样的?

这篇文章主要介绍了Java中的binarysearch方法原理,并通过示例代码进行了详细解释。对于想要学习或工作的朋友们来说,这是一份非常有价值的参考资料。

首先,数组排序是使用binarysearch方法的前提。在Java中,可以使用import java.util.Arrays;语句来导入数组排序的相关类。

以下是一个简单的binarysearch方法示例:

javapublic class BinarySearchExample { public static void main(String[] args) { int[] arr={1, 3, 5, 7, 9, 11}; int key=7; int index=binarySearch(arr, key); if (index !=-1) { System.out.println(Element found at index: + index); } else { System.out.println(Element not found in the array); } }

public static int binarySearch(int[] arr, int key) { int low=0; int high=arr.length - 1; while (low <=high) { int mid=(low + high) / 2; if (arr[mid]==key) { return mid; } else if (arr[mid]

这个示例中,我们首先定义了一个有序数组arr和一个要查找的key值。然后,我们调用binarySearch方法来查找key在数组中的位置。如果找到了,就返回索引;如果没有找到,就返回-1。

对于想要进一步学习的读者,binarysearch方法在Java的Arrays类中也有直接的支持,可以通过Arrays.binarySearch(arr, key)方法直接调用,这样更加方便和简洁。

总之,binarysearch方法是一种高效的查找算法,对于学习或工作都有一定的参考价值。希望这篇简短的介绍对大家有所帮助。

这篇文章主要介绍了Java binarysearch方法原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java中二分查找算法(binarysearch)的工作原理是怎样的?

首先 数组排序需要import java.util.Arrays类

binarysearch有两个用法,一个是在整个数组里搜索,一个是在指定范围搜索,其实都是差不多的,可以将前者视为后者的特殊情况。

用法1

binarySearch(Object[], Object key)

Object是目标数组,key是目标值,要求目标数组必须要经过排序的,否则无法找到正确的结果

查询无非就是两种结果,一种是目标值在目标数组里,另一种是不在

所以返回值也分为正负两种,目标值在目标数组内的,返回下标(如果有多个相同的,无法确定找到的是哪个,因为是二分搜索)

目标值不在数组内的,返回 -(第一个大于目标值的元素的下标+1),类似的,如果数组内的值都比目标值小,则是返回-(数组长度+1)

样例:

import java.util.Arrays; public class number { public static void main(String[] args) { int a[] = new int[] {1, 3, 4, 6, 8, 9}; int x1 = Arrays.binarySearch(a, 5); int x2 = Arrays.binarySearch(a, 4); int x3 = Arrays.binarySearch(a, 0); int x4 = Arrays.binarySearch(a, 10); System.out.println(x1+" "+x2+" "+x3+" "+x4); } }

输出:

-4 2 -1 -7

也可以这么理解:

对应相应的位置输出即可。

用法2

binarySearch(Object[], int fromIndex, int toIndex, Object key)

加了两个int变量,代表区间的开始和结束,从fromindex(包含)到toindex(不包含)这个区间里面搜索,返回值和前面用法1类似,唯一有所不同的是,当如果区内的值都比目标值小,则是返回-(toindex+1),如果区间内的值都比目标值大,则返回-(fromindex+1),仔细想想不难理解,用法1就相当于fromindex为0且toindex为数组长度的用法2。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。