簡體   English   中英

如何對數組中的一個特定元素進行二進制搜索?

[英]how to binary search one specific element in an array?

我設置了一個二分搜索算法,但我不知道如何讓它像我想告訴它尋找一個元素並顯示它是否找到的那樣工作,任何提示都會有所幫助,謝謝

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();
     }

二分搜索的工作原理是,通過重復將搜索間隔分成兩半來搜索排序數組。 從覆蓋整個數組的間隔開始。 如果搜索鍵的值小於區間中間的項,則將區間縮小到下半部分。 否則,將其縮小到上半部分。 反復檢查,直到找到值或區間為空。

    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);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM