【算法】查找算法

简介: 【算法】查找算法

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

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

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


相关文章
|
5月前
|
算法 程序员 数据处理
C++中的查找算法
C++中的查找算法
40 2
|
5月前
|
存储 机器学习/深度学习 算法
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
【C/C++ 查找算法】深入探索数据查找算法:原理、数学模型与C/C++实现
121 0
|
算法 Java 索引
基本查找算法
基本查找算法
|
10月前
|
算法 C语言 C++
C/C++ 常用的四种查找算法
在计算机科学中,搜索算法是一种用于在数据集合中查找特定元素的算法。C语言作为一种强大的编程语言,提供了多种搜索算法的实现方式。本文将介绍C语言中的四种常见搜索算法其中包括(线性查找,二分法查找,树结构查找,分块查找),并提供每种算法的简单实现示例。
175 0
|
11月前
|
算法 C++
88 C++ - 常用查找算法
88 C++ - 常用查找算法
52 0
|
算法
【基础算法 二】查找算法
【基础算法 二】查找算法
67 0
|
算法 索引
【21天算法学习】顺序查找
【21天算法学习】顺序查找
67 0
|
算法
【21天算法学习】折半查找
【21天算法学习】折半查找
90 0
|
存储 算法 索引
你不能不知道的查找算法!!!
本文章用于讲解查找算法
94 0
|
算法 Java 索引
经典算法——顺序查找
经典算法——顺序查找
经典算法——顺序查找