最简单的状况:有序数组中不存在重复元素,查找特定元素:数组
const biaryFind = (sortedArr, target) => { if (sortedArr.length === 0) return -1 let low = 0 let high = sortedArr.length - 1 while (low <= high) { const mid = Math.floor((low + high) / 2) //可写成:low+(high-low)/2。防止数据溢出 //进一步优化 low+((high-low)>>1)。相比除法运算来讲,计算机处理位运算要快得多 if (target === sortedArr[mid]) { return mid } else if (target < sortedArr[mid]) { high = mid - 1 } else { low = mid + 1 } } return -1 }
时间复杂度: O(logn)
适用场景:函数
二分查找的相关问题:大数据
拓展
对有序链表的查找:跳表,查找时间复杂度O(logn)优化
散列表也叫哈希表,使用数组支持按照下标随机访问数据的特性
散列函数计算key,获得散列值,做为下标。
装载因子=填入表中的元素个数/散列表的长度
解决散列冲突:code