【问题标题】:how to binary search one specific element in an array?如何对数组中的一个特定元素进行二进制搜索?
【发布时间】:2022-01-22 07:29:55
【问题描述】:

我设置了二进制搜索算法,但我不知道如何使它工作 就像我想告诉它寻找一个元素并显示它是否找到的地方 任何提示都会有所帮助 谢谢

public static int search(int arr[], int x)
{ 
    int startIndex = 0 ; 
    int endIndex = arr.length-1;
    while ( startIndex <=endIndex){
    int midpoint = (startIndex + endIndex )/2;
    if(arr[midpoint]==x)
        return midpoint;
    else if(arr[midpoint]<x)
        startIndex=midpoint+1;
    else
        endIndex = midpoint = -1;
    }
    return -1;
}
 
//here i want to make it search for 6 

    public static void main (String [] args ){
     search v = new search();
     int [] test = {1,99,6,32,4,6,33,90};
     for (int element: test) {
    System.out.println("the elements of array: "+ element);
    int x = 6;
    int result=v.binarySearch();
     }

【问题讨论】:

  • 二分查找要求首先对元素进行排序。
  • 你还有一些非常好的语法错误。您的方法是静态的并称为search,但您在对象v 上调用它并调用binarySearch。这些都没有任何意义。

标签: java search binary


【解决方案1】:

二分搜索的工作原理是,通过重复将搜索间隔分成两半来搜索已排序的数组。从覆盖整个数组的间隔开始。如果搜索键的值小于区间中间的项,则将区间缩小到下半部分。否则,将其缩小到上半部分。反复检查,直到找到值或区间为空。

    int[] test = {1, 99, 6, 32, 4, 6, 33, 90};
    int num = 6;
    Arrays.sort(test);
    System.out.println(binarySearch(test, num, 0, test.length));

二分查找的逻辑如下所示,

public int binarySearch(int arr[], int num, int min, int max) {
    if (min > max) {
      return -1;
    }
    int mid = min + (max - min) / 2;
    if (arr[mid] == num) {
      return mid;
    } else if (arr[mid] < num) {
      return binarySearch(arr, num, mid + 1, max);
    }
    return binarySearch(arr, num, min, mid - 1);
  }

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2013-09-29
    • 2022-10-02
    相关资源
    最近更新 更多