最簡單的狀況:有序數組中不存在重複元素,查找特定元素:數組
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