二分查找法

China☆狼群 提交于 2020-02-28 13:40:34

1.普通查找:

使用遍历从前往后一个一个找。

代码实现:

 public static void main(String[] args) {
        int[] arr= {5, 6, 7, 32, 43, 44, 678};
        int num = 47;
//调用方法
        int i = find(arr, num);
        System.out.println(i);
    }
    //定义方法
    public static int find(int[] arr, int num){
//数组的遍历
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == num){
                return i;
            }
        }
//使用-1来代表不存在这个元素
        return -1;
    }

2.二分查找

前提条件:数组必须是已经排序好的。

图解:

在这里插入图片描述

代码实现:

public static void main(String[] args) {
//准备数组
        int[] arr = {5, 6, 7, 32, 43, 44, 678};
        int num = 46;
//调用方法
        int i = find(arr, num);
        System.out.println(i);
    }
    //定义方法
    public static int find(int[] arr, int num){
//定义最左边
        int left = 0;
//定义最右边
        int right = arr.length-1;
//循环
        while(right >= left){
//定义中间位置
            int mid = (left+right)/2;
//比较
            if(num > arr[mid]){
                left = mid+1;
            }else if(num < arr[mid]){
                right = mid-1;
            }else{
                return mid;
            }
        }
//循环结束代表找不到
        return -1;
    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!