什么是算法
一组完成任务的指令。任何代码片段都可视为算法。
二分查找--一种简单的算法示例
对于包含n个元素的列表,一般而言,二分查找最多需要log2n步。(对数运算是幂运算的逆运算,如log10100=2。常规简写:log指log2,lg指log10,ln指loge)
二分查找仅适用于有序列表
python实现二分查找defbinary_search(list, item):low=0high=0whilelow<=high:mid=(low+high)/2guess=list[mid]ifguess==item:returnmidelifguess>item:high=mid-1else:low=mid+1returnNone测试下print(binary_search(my_list,3))结果为1print(binary_search(my_list,-1))结果为None
大O表示法
表示算法有多快。并非表示速度,而是通过操作数表示了算法运行时间的增速。
大O表示法指出了最坏情况下的运行时间。
常见的5种:
O(log n):对数时间,例如二分查找O(n):线性时间,例如简单查找O(n*log n):例如快速排序O(n²):例如选择排序O(n!):例如旅行商问题,非常慢。旅行商问题即XX要去n个城市,遍历路线找出旅程最短的路线,实际是排列组合问题
总结
1、算法的速度并非指时间,而是操作数的增速。
2、元素越多,算法性能差异越明显。元素越多,二分查找比简单查找越是快得多。
3、算法运行时间不以秒为单位,而是从增速的角度度量。
网站声明:文章内容来源于网络,本站不拥有所有权,请认真核实,谨慎使用,本站不承担相关法律责任。