二分法查找
猜数字游戏
0-1000猜数字游戏:
-
普通查找:100,99,98,…,1,需要100步
-
二分法查找:
100--->50--->25--->13--->7--->4--->2--->1
,每次猜测中间的数字(假设猜测数字是1),将余下的数字排除一半。需要7步
n个元素组成的列表,最多需要走$log_2{n}$步。普通查找n步
attention:二分法查找仅对有序列表有用
思想
折半查找,比较次数少,速度快,只能作用于有序数组和顺序表,当查找范围内只有一个数据的时候,结束查找。
- 最优时间复杂度:$O(1)$
- 最坏时间复杂度:$O(logn)$
运行时间
运行时间是通过大o()运行时间来表示
- 二分查找的速度比线性查找快的多,元素越多,快的越多
- 算法运行时间是从其增速的角度来度量的
Python实现
1 | # 非递归版本 |
1 | # 线性查找 |
选择排序
1 | def findSmallest(alist): # 找出最小的元素 |