二分法查找元素

package Demo.array;

import java.util.Arrays;

/**
 * 二分法查找
 * 仅仅适用于有序数组
 */
public class TwoSearch {
    public static void main(String[] args) {
        int[] arr = {4,3,2,0};
        Arrays.sort(arr);//利用工具类对数组进行排序
        System.out.print("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        int index = search(arr, 3);
        System.out.println(index == -1 ? "\n元素不存在!" : "\n该元素下标为:"+index);
    }

    private static int search(int[] arr,int dest){
        int min = 0;//开始位置下标
        int max = arr.length-1;//结束位置下标
        while (min <= max) {
            int mid = (min+max)/2; //中间元素下标
            if (arr[mid] == dest) {
                return mid;//找到了元素,退出方法
            } else if (arr[mid] < dest) {
                min = mid + 1;
            } else {
                max = mid - 1;
            }
        }
        return -1;
    }
}
posted @ 2021-11-07 16:23  都几点了,还在睡  阅读(73)  评论(0编辑  收藏  举报