很多学过算法的童鞋,都觉得老师讲的算法里面排序占有很大的比例,可以说排序是算法的重点,这是为什么呢?
原因是,很大部分的算法仅在数据经过排序后才管用,例如我们最经典的二分查找。
首先先介绍下最基本的两种数据类型:数组和链表
数组:是内存相邻的一个队列
链表:内存不相邻的队列,每个元素都会存下下一个元素的地址
很明显,两种数据类型的操作的时间复杂度:
数组 | 链表 | |
读取 | O(1) | O(n) |
插入 | O(n) | O(1) |
删除 | O(n) | O(1) |
下面来介绍下上面说到的时间复杂度(大O表示法)
大O表示法:O(最坏情况下操作数)
常见的几种大O运行时间:
由快到慢:O(log n)、O(n)、O(n * log n)、O(n^2)、O(!n)
我们的二分查找就是O(log n)了
最后我们介绍下最经典的二分查找吧: