数据结构-查找

久未见 提交于 2019-12-03 05:02:24

一、二分查找

必须为有序数组

1.1递归实现

static int recursive(int[] arr,int low,int high,int target){
         if(target < arr[low] || target >arr[high] || low> high){
             return -1;
         }
         int middle = (low + high)/2;
         if(arr[middle] <target){
             return recursive(arr, middle+1, high, target);
         }else if(arr[middle]>target){
             return recursive(arr,0,middle-1, target);
         }
         else{
             return middle;
         }
     }

  1.2 循环实现

public static void main(String[] args) {
        Arrays.sort(array);
        int num = 1;
        int end = array.length-1,begin=0;
        while(array[(begin + end)/2] != num){
            if(num < array[(begin + end)/2]){
                end = (begin + end)/2;
            }
            else{
                begin=(begin + end)/2;
            }
        }
        System.out.println((begin + end)/2);
    }

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!