美文网首页
数组-二分查找

数组-二分查找

作者: unicorn518 | 来源:发表于2020-03-16 11:17 被阅读0次

数组的特点

1. 长度固定且可知

2. 访问数组中的某个元素的时间复杂度为 O(1), 可通过index直接访问

3. 在数组中插入或删除一个元素,时间复杂度为O(n),因为需要先查询

二分查找

前提: 数值按照index排序,如此index与值就有了一致升序或反之,就可以利用这个特点减少查找的范围

            为顺序存储结构, 标明index连续,则值连续

算法:递归

     func int binarySearch(int nums[], int target): 

            start = 0, end = nums.length

            mid = start +  (end - start) / 2;

            while (start + 1 < end)

                   if nums[mid] == target: return mid

                   if nums[mid] < target: start = mid

                   if nums[mid] > target: end= mid

            if nums[start] == target: return start;

            if nums[end] == target: return end;

            return -1;

时间复杂度: O(logN)

空间复杂度:  O(logN)

相关文章

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 查找

    顺序查找 二分查找 插值查找 查找子数组最大和

  • 二分查找及其扩展

    在有序数组中,二分查找是效率较高的查找算法。二分查找一般有递归和迭代 对有序数组查找指定数字在数组中出现的次数//...

  • day13

    查找算法 顺序查找 二分查找 差值查找 斐波那契查找 二分查找 前提数组必须是有序的。 升级 Interpolat...

  • 循环数组的二分查找--Java实现

    与普通二分查找的不同: 以上的查找对象为循环数组,而普通二分查找的对象为有序的普通数组; 正因为是循环数组,取中进...

  • BinarySearch

    前提 必须是有序数组。 思路 无重复数组二分查找 有重复数组二分查找 思路 1.退出条件leftIndx>righ...

  • Java数据结构和算法(有序数组和二分查找)

    一、概述 有序数组中常常用到二分查找,能提高查找的速度。今天,我们用顺序查找和二分查找实现数组的增删改查。 二、有...

  • 4-1 LC:二分查找

    有序数组的二分查找

  • 二分搜索算法 Go

    说明 二分查找的数组必须是有序的,二分查找的优点是查找操作仅需要O(lgN)时间。 逻辑 首先传入的数组必须是有序...

  • 二分查找法

    使用二分查找的前提是,查找的数组顺序必须是有序的。 二分查找又称折半查找,通过定义有序数组(左小右大)的首元素的索...

网友评论

      本文标题:数组-二分查找

      本文链接:https://www.haomeiwen.com/subject/srnwehtx.html