LINEAR SEARCH | BINARY SEARCH | O(n) vs O(log n)
从第一个元素开始,逐个比较直到找到目标或遍历完整个数组。适用于无序数据。
时间复杂度 O(n)
前提:数组已排序。每次取中间元素比较,根据大小舍弃一半,逐步缩小搜索范围。
时间复杂度 O(log n)
for i from 0 to n-1:
if arr[i] == target: return i
return -1
在下方「二分查找」演示区选择「线性搜索」模式可对比两种算法的步数差异。
while left <= right:
mid = (left + right) / 2
if arr[mid] == target: return mid
if arr[mid] < target: left = mid + 1 // 目标在右半
else: right = mid - 1 // 目标在左半
return -1