zoukankan      html  css  js  c++  java
  • 二分查找法(Java实现)

    package sort;
    
    import java.util.Arrays;
    
    public class SearchUtils {
        public static void main(String[] args) {
            int[] arr = { 54, 26, 93, 17, 77, 31, 44, 55, 20 };
            // 二分查找要求数组有序
            SortUtils.quickSort(arr, 0, arr.length - 1);
            System.out.println(binarySearch(arr, 55));
            System.out.println(binarySearch2(arr, 78));
        }
    
        // 二分查找————递归实现
        public static boolean binarySearch2(int[] arr, int item) {
            int first = 0;
            int last = arr.length - 1;
            if (first >= last) {
                return false;
            } else {
                int mid = (first + last) / 2;
                if (arr[mid] == item) {
                    return true;
                } else if (arr[mid] > item) {
                    return binarySearch(Arrays.copyOfRange(arr, first, mid - 1), item);
                } else {
                    return binarySearch(Arrays.copyOfRange(arr, mid + 1, last), item);
                }
            }
        }
    
        // 二分查找————非递归实现
        public static boolean binarySearch(int[] arr, int item) {
            int first = 0;
            int last = arr.length - 1;
            while (first <= last) {
                int mid = (first + last) / 2;
                if (arr[mid] == item) {
                    return true;
                } else if (arr[mid] > item) {
                    last = mid - 1;
                } else {
                    first = mid + 1;
                }
            }
            return false;
        }
    }
  • 相关阅读:
    HttpClient后台post 请求webapi
    [SQL Server] 复制数据库任务
    C# js 在页面能执行,放在单独js文件不能执行
    Flink 中的kafka何时commit?
    jar依赖
    AI重要算法
    NonWindowJoin
    Rocket MQ 源码解析
    linear algebra
    Theories of Deep Learning
  • 原文地址:https://www.cnblogs.com/tangxlblog/p/9946932.html
Copyright © 2011-2022 走看看