Java 程序在双精度数组上实现二分查找


双精度数组上的二分查找可以用下列方法实现

java.util.Arrays.binarySearch(). 如果数组中包含所需的双精度元素,此方法将返回该元素的索引,否则返回 (-(插入点) - 1),其中插入点是元素将插入数组中的位置。

以下是一个演示此功能的程序示例 −

示例

 活动演示

import java.util.Arrays;
public class Demo {
   public static void main(String[] args) {
      double d_arr[] = { 5.2, 7.5, 9.7, 1.8, 4.0 };
      Arrays.sort(d_arr);
      System.out.print("The sorted array is: ");
      for (double i : d_arr) {
         System.out.print(i + " ");
      }
      System.out.println();
      int index1 = Arrays.binarySearch(d_arr, 9.7);
      System.out.println("The double value 9.7 is at index " + index1);
      int index2 = Arrays.binarySearch(d_arr, 2.5);
      System.out.println("The double value 2.5 is at index " + index2);
   }
}

输出

The sorted array is: 1.8 4.0 5.2 7.5 9.7
The double value 9.7 is at index 4
The double value 2.5 is at index -2

接下来,让我们理解一下上面的程序。

定义双精度数组 d_arr[],然后使用 Arrays.sort() 对其进行排序。然后使用 for 循环打印排序后的数组。以下代码片段演示了此过程 −

double d_arr[] = { 5.2, 7.5, 9.7, 1.8, 4.0 };
Arrays.sort(d_arr);
System.out.print("The sorted array is: ");
for (double i : d_arr) {
   System.out.print(i + " ");
}
System.out.println();

使用 Arrays.binarySearch() 方法查找元素 9.7 和 2.5 的索引。由于数组中包含 9.7,因此会显示其索引。此外,数组中不包含 2.5,因此会显示根据 (-(插入点) - 1) 确定的值。以下代码片段演示了此过程 −

int index1 = Arrays.binarySearch(d_arr, 9.7);
System.out.println("The double value 9.7 is at index " + index1);
int index2 = Arrays.binarySearch(d_arr, 2.5);
System.out.println("The double value 2.5 is at index " + index2);

更新于: 2020 年 6 月 25 日

244 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告