Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 程序?qū)崿F(xiàn)二進(jìn)制搜索算法

Java 實(shí)例大全

在此示例中,我們將學(xué)習(xí)在Java中實(shí)現(xiàn)二進(jìn)制搜索算法。

在學(xué)習(xí)Java中的二進(jìn)制搜索實(shí)現(xiàn)之前,請確保您了解二進(jìn)制搜索算法的工作原理。

示例:實(shí)現(xiàn)二進(jìn)制搜索算法的Java程序

import java.util.Scanner;

//Java中的二進(jìn)制搜索

class Main {
  int binarySearch(int array[], int element, int low, int high) {

    //重復(fù)這個過程,直到指針的高(high)與低(low)相等
    while (low <= high) {

      //獲取 mid 元素的索引
      int mid = low + (high - low) / 2;

      //如果要搜索的元素是 mid 元素
      if (array[mid] == element)
        return mid;

      //如果元素小于 mid 元素
      //只搜索mid的左側(cè)
      if (array[mid] < element)
        low = mid + 1;

      //如果元素大于mid 元素
      //只搜索mid的右側(cè)
      else
        high = mid - 1;
    }

    return -1;
  }

  public static void main(String args[]) {

    //創(chuàng)建Main類的對象
    Main obj = new Main();

    //創(chuàng)建一個排序的數(shù)組
    int[] array = { 3, 4, 5, 6, 7, 8, 9 };
    int n = array.length;

    //從用戶那里獲取輸入,要搜索的元素
    Scanner input = new Scanner(System.in);

    System.out.println("輸入要搜索的元素:");

    //要搜索的元素
    int element = input.nextInt();
    input.close();

    //調(diào)用二進(jìn)制搜索方法
    //傳遞參數(shù): 數(shù)組、元素、第一個和最后一個元素的索引
    int result = obj.binarySearch(array, element, 0, n - 1);
    if (result == -1)
      System.out.println("Not found");
    else
      System.out.println("找到元素,在索引 " + result);
  }
}

輸出1

輸入要搜索的元素:
6
找到元素,在索引  3

在這里,我們已使用Java掃描器類從用戶那里獲取輸入。根據(jù)用戶的輸入,我們使用了二進(jìn)制搜索來檢查數(shù)組中是否存在該元素。

我們還可以使用遞歸調(diào)用來執(zhí)行相同的任務(wù)。

  int binarySearch(int array[], int element, int low, int high) {

    if (high >= low) {
      int mid = low + (high - low) / 2;

      // 檢查 mid 元素是否為搜索的元素
      if (array[mid] == element)
        return mid;

      //搜索 mid 的左半部分
      if (array[mid] > element)
        return binarySearch(array, element, low, mid - 1);

      //搜索 mid 的右半部分
      return binarySearch(array, element, mid + 1, high);
    }

    return -1;
  }

在此,該方法binarySearch()將調(diào)用自身,直到找到該元素或if條件失敗為止。

Java 實(shí)例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清