当前位置: 首页 > 科技观察

简述二分查找算法和时间复杂度,实现一个二分查找算法

时间:2023-03-21 00:09:15 科技观察

二分查找,又称二分查找算法,是一种简单易懂的快速查找算法。比如我随便写一个0-100之间的数字,你猜我写的是什么?每次你猜,我都会告诉你猜的是大是小,直到你猜对为止。该算法要求对要查找的数组进行排序,实现步骤如下:选择数组中的中间数,与中间数进行比较。如果低于中间数,则转到中间数左边的子数组;在中间数右边的子数组中查找;如果相等则返回查找,重复上一步直到查找成功或失败functionbinarySearch(items,item){varlow=0,high=items.length-1,mid,elemwhile(low<=high){mid=Math.floor((low+high)/2)elem=items[mid]if(elemitem){high=mid-1}else{returnmid}}return-1}//测试vararr=[2,3,1,4]//快速排序quickSort(arr)binarySearch(arr,3)//2binarySearch(arr,5)//-1测试成功两点发现错误-易发点:循环退出条件为low<=high,注意<=mid的值为Math.floor((low+high)/2)lowhigh每次更新时,low=mid+1high=mid-1二分查找的局限性:对象是数组结构,因为元素数组是通过下标随机访问的。阵列必须有序。阵列太小,不合适。它可以直接用于顺序搜索。数组太长不合适,数组需要连续的内存空间,太长的数组不利于存储时间复杂度:O(logn)空间复杂度:O(1)leetcode:https://leetcode-cn.com/problems/binary-search/solution/er-fen-cha-zhao-by-user7746o/