顺序查找
- 从列表第一个元素开始,顺序进行搜索,直到找到为止。
1 | li = [1,2,3] |
二分查找
只能用于有序列表
从有序列表的候选区data[0:n]
开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。O(logn)
复杂度
1 | # 二分查找 |
刷题:Letcode
34. Search for a Range (二分查找升级版)
1. Two Sum
习题
1 34. Search for a Range (二分查找升级版)
1 | def bin_search(li, val): |
2 . 1. Two Sum
1 | def two_sum(nums, target): |
或者
1 | def bin_search(data_set, value): |
扩展
1. Two Sum 如果是 3 个数 就把第一个数固定, 后面的列表用 two_sum_3 来计算
如果这样时间复杂度
nlogn + n²
最终的时间复杂度是 n²
如果用二分查找, 就需要先排序, 定住两个数, 排序(nlogn) + 定住两个数(n²)
二分(n²logn)
最终的复杂度是 n²logn