【算法】查找算法

简介: 【算法】查找算法

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

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

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;
    // }


相关文章
|
1月前
|
算法 C# 索引
C#线性查找算法
C#线性查找算法!
|
7月前
|
算法 程序员 数据处理
C++中的查找算法
C++中的查找算法
52 2
|
7月前
|
算法 C语言
杨氏矩阵查找算法
杨氏矩阵是一种特殊矩阵,其每一行和每一列都是递增的。要在一个杨氏矩阵中查找特定数值,可以从右上角或左下角开始,通过比较当前元素与目标值的大小来决定向下或向左移动,直到找到目标值或超出边界。这种方法的时间复杂度为O(N)。文中还提供了一段C语言代码实现此查找算法,并给出了牛客网上的相关练习题链接。
31 1
|
算法 Java 索引
基本查找算法
基本查找算法
|
7月前
|
存储 机器学习/深度学习 算法
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
179 0
|
算法 C++
88 C++ - 常用查找算法
88 C++ - 常用查找算法
61 0
|
算法
【基础算法 二】查找算法
【基础算法 二】查找算法
73 0
|
存储 算法 索引
你不能不知道的查找算法!!!
本文章用于讲解查找算法
99 0
|
算法
【21天算法学习】折半查找
【21天算法学习】折半查找
98 0

热门文章

最新文章