重要的事情写在前面,数组中的元素必须有序!!!今天复习数组的时候,又详细的复习了一下二分查找法。
- import java.util.Arrays;
- /**
- * 二分查找法
- * @author Shawn·Zhang
- *
- */
- public class Demo
- {
- public static void main(String[] args)
- {
- int[] arr = {8,7,9,4,2,5,1,3,6};
- Arrays.sort(arr);//排序
- System.out.println(Arrays.toString(arr));
- int value = getNum(arr, 3);
- System.out.println("数值3是数组第"+value+"号元素");
-
- }
- private static int getNum(int[] arr, int value){
- int low = 0;
- int high = arr.length-1;
- while(low<= high){
- int middle = (low+high)/2;
- if(value==arr[middle]){
- return middle;
- }else if(value<arr[middle]){
- high = middle-1;
- }else if(value>arr[middle]){
- low = middle+1;
- }
- }
- return -1;//若没有所要查找的值,则返回负一
- }
-
- }
复制代码 同样的,Java中也为我们提供了这个API,在以后使用中,我们可以直接简写:
- /**
- * 二分查找法
- * @author Shawn·Zhang
- *
- */
- public class Demo
- {
- public static void main(String[] args)
- {
- int[] arr = {8,7,9,4,2,5,1,3,6};
- Arrays.sort(arr);//排序
- System.out.println(Arrays.toString(arr));
- //int value = getNum(arr, 3);
- int value = Arrays.binarySearch(arr, 0);//Java提供的方法
- System.out.println("数值3是数组第"+value+"号元素");
-
- }
-
- }
复制代码
|
|