上一课讲了数组,这节课顺利过渡到了数组的查找、排序。
即查找算法、排序算法。
关于查找算法,除了常见的linear search ,binary search ,还有好多好多。下面是常见的七大查找算法:
- 顺序查找
- 二分查找
- 插值查找
- 斐波那契查找
- 树表查找
- 分块查找
- 哈希查找
排序算法,除了冒泡排序、插入排序、归并排序,还有很多很多其他的排序算法。(见维基百科- 排序算法)
讲到算法,课中自然提到的算法复杂度,O、Ω、Θ 这些记号。
O表示上界,即最坏情况下需要运行的时间(步)。
Ω表示下界,即最好情况下需要运行的时间(步)。
Θ表示准确界限,O=Ω时,可以用Θ表示。
常见的是大O:
- O(1) denotes constant running time.
- O(n) denotes linear running time.
- O(log n) denotes logarithmic running time.
- O(nlog n) denotes log-linear running time.
- O(
nk
) denotes polynomial running time.
- O( cn ) denotes exponential running time.
网上有许多排序算法、查找算法复杂度的总结。
可以参考:每个程序员都应该收藏的算法复杂度速查表
关于这些算法的实现,可需要一些时间。
以前的几篇笔记有了部分python的实现,这里就不写了,以后会另外总结的。