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);
广告