【算法】查找算法

简介: 【算法】查找算法

二分查找并返回数据应该插入的位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

public static int searchInsert(int[] nums, int target) {
        int low = 0;
        int high = nums.length-1;
        while(low<=high){
            int mid = (low+high)>>>1;
            if(nums[mid]<target){
                low = mid+1;
            }else if(target<nums[mid]){
                high = mid - 1;
            }else{
                return mid;
            }
        }
        return low;
    }
    // ---------这种解法和上面那种差不多-------------
    //  public static int searchInsert(int[] nums, int target) {
    //     int low = 0;
    //     int high = nums.length-1;
    //     while(low<=high){
    //         int mid = (low+high)>>>1;
    //         if(target<=nums[mid]){
    //             high = mid -1 ; 
    //         }else{
    //             low = mid + 1;
    //         }
    //     } 
    //     return low;
    // }
    //-----------------解法--------------------
    // public static int searchInsert(int[] nums, int target) {
    //     int len = nums.length;
    //     if (nums[0] >= target) {
    //         return 0;
    //     }
    //     if (target == nums[len - 1]) {
    //         return len - 1;
    //     }
    //     if (target > nums[len - 1]) {
    //         return len ;
    //     }
    //     return binarySearch(nums, 0, len, target);
    // }
    // public static int binarySearch(int[] nums, int left, int right, int target) {
    //     while (left <= right) {
    //         int mid = (left + right) / 2;
    //         if (nums[mid] == target) {
    //             return mid;
    //         } else if (nums[mid] < target) {
    //             if (nums[mid + 1] > target) {
    //                 return mid+1;
    //             }
    //             return binarySearch(nums, mid, right, target);
    //         } else { //nums[mid]>target
    //             if (nums[mid - 1] < target) {
    //                 return mid;
    //             }
    //             return binarySearch(nums, left, mid, target);
    //         }
    //     }
    //     return 0;
    // }


相关文章
|
10天前
|
算法 搜索推荐 数据库
二分搜索:高效的查找算法
【10月更文挑战第29天】通过对二分搜索的深入研究和应用,我们可以不断挖掘其潜力,为各种复杂问题提供高效的解决方案。相信在未来的科技发展中,二分搜索将继续发挥着重要的作用,为我们的生活和工作带来更多的便利和创新。
15 1
|
2天前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
1月前
|
存储 算法 C#
C#哈希查找算法
C#哈希查找算法
|
6月前
|
算法 程序员 数据处理
C++中的查找算法
C++中的查找算法
43 2
|
算法 Java 索引
基本查找算法
基本查找算法
|
6月前
|
存储 机器学习/深度学习 算法
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
147 0
|
算法 C++
88 C++ - 常用查找算法
88 C++ - 常用查找算法
58 0
|
算法
【基础算法 二】查找算法
【基础算法 二】查找算法
69 0
|
存储 算法 索引
你不能不知道的查找算法!!!
本文章用于讲解查找算法
97 0
|
算法
【21天算法学习】折半查找
【21天算法学习】折半查找
94 0