算法
文章平均质量分 79
caomiao2006
这个作者很懒,什么都没留下…
展开
-
算法的最坏情况与平均情况
如果一个程序运行多次,则有时候它会快点儿,有时候它会慢点儿。算法也一样,在输入1的情况下和输入2的情况下,其执行效率不一定一样。即算法会随着输入数据的不同而有秩序效率的不同,有时候会快点儿,有时候会慢点儿。例如,对一个已经排好序的序列进行排序就要相对容易一些。另外,输入规模的大小也影响算法的运行时间。例如,一个短的序列就比一个很长的序列容易排序。一般来说,我们希望获得一个算法的时间效率下限转载 2016-04-03 16:45:26 · 7480 阅读 · 0 评论 -
算法的时间复杂度
算法的时间复杂度是衡量一个算法效率的基本方法。在阅读其他算法教程书的时候,对于算法的时间复杂度的讲解不免有些生涩,难以理解。进而无法在实际应用中很好的对算法进行衡量。 《大话数据结构》一书在一开始也针对算法的时间复杂度进行了说明。这里的讲解就非常明确,言简意赅,很容易理解。下面通过《大话数据结构》阅读笔记的方式,通过原因该书的一些简单的例子和说明来解释一下算法的转载 2016-04-03 16:10:41 · 2305 阅读 · 0 评论 -
二叉排序树与二叉堆
1 快排效率是不稳定的nlogn2 二叉树实现排序的效率是稳定的nlogn3 用二叉树实现排序有两种方法: 二叉排序树和二叉堆排序树 二者在实现及原理上有不同之处。二叉排序树 用链表实现 令二叉树的每一个节点大于左子树的节点,小于右子树的节点。 中序遍历这样的一棵树,就能实现从小到大的输出 插入时,每一个新节点都是插在“最低端”转载 2016-11-19 17:13:43 · 1094 阅读 · 0 评论 -
递归算法转换为非递归算法
递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。 将递归算法转换为非递归算法有两种方法,一种是直接求值转载 2016-11-20 12:02:28 · 1346 阅读 · 1 评论 -
缓存算法(页面置换算法)-FIFO、LFU、LRU
1. FIFO -- 先进先出如果一个数据最先进入缓存中,则应该最早淘汰掉。也就是说,当缓存满的时候,应当把最先进入缓存的数据给淘汰掉。实现:利用一个双向链表保存数据,当来了新的数据之后便添加到链表末尾,如果Cache存满数据,则把链表头部数据删除,然后把新的数据添加到链表末尾。在访问数据的时候,如果在Cache中存在该数据的话,则返回对应的value值;否则返回-1。如果转载 2016-11-23 23:10:42 · 3124 阅读 · 0 评论