【算法】查找算法

简介: 【算法】查找算法

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

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

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


目录
打赏
0
0
0
0
5
分享
相关文章
|
10月前
|
杨氏矩阵查找算法
杨氏矩阵是一种特殊矩阵,其每一行和每一列都是递增的。要在一个杨氏矩阵中查找特定数值,可以从右上角或左下角开始,通过比较当前元素与目标值的大小来决定向下或向左移动,直到找到目标值或超出边界。这种方法的时间复杂度为O(N)。文中还提供了一段C语言代码实现此查找算法,并给出了牛客网上的相关练习题链接。
58 1
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
215 0
88 C++ - 常用查找算法
88 C++ - 常用查找算法
82 0
【基础知识】一文看懂深度优先算法和广度优先算法
图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。 我们根据访问节点的顺序与方式(根据搜索方法),可以分为广度优先(BFS)和深度优先(DFS),这是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等。
【基础算法 二】查找算法
【基础算法 二】查找算法
86 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等