数据结构和算法
zpwggi123
这个作者很懒,什么都没留下…
展开
-
递归
(电影院的例子) (走台阶的例子) 递归需要满足的三个条件: 1.一个问题的解可以分解为几个子问题的解; 2.这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样; 3.存在递归终止条件。 如何编写递归代码? 写递归代码最关键的是写出递推公式,找到终止条件,剩下将递推公式转化为代码就很简单了。 写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,然后再推...转载 2018-10-12 14:02:09 · 182 阅读 · 0 评论 -
队列(queue)
队列(queue): 队列在线程池等有限资源池中的应用。 我们知道,CPU资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致CPU频繁 切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件资源,来事先设置的。 当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源,这个时候线程池如何处理这个请求?是 拒绝请求还是...转载 2018-10-13 14:21:13 · 124 阅读 · 0 评论 -
排序(一)
最经典,最常用的排序算法: 冒泡排序,插入排序,选择排序,归并排序,快速排序,计数排序,基数排序,桶排序。 按照时间复杂度把它们分成了三类: 排序算法 时间复杂度 是否基于比较 冒泡,插入,选择 O(n^2) 是 快排,归并 O(nlogn) 是 桶,计数,基数 O(n) ...转载 2018-10-15 13:53:30 · 177 阅读 · 0 评论 -
排序(二)
插入排序和冒泡排序的时间复杂度相同都是O(n^2),在实际的软件开发里,为什么我们更倾向于使用插入排序算法而不是冒泡排序算法呢?为什么插入排序比冒泡排序更受欢迎?...转载 2018-10-17 16:07:02 · 106 阅读 · 0 评论