算法导论
文章平均质量分 70
super_chicken
这个作者很懒,什么都没留下…
展开
-
算法导论 第4章 分治策略(2)
算法导论 第4章 分治策略(2)代入法求解递归式代入法求解递归式的步骤:猜测解的形式用数学归纳法求出解中的常数,并证明解正确如对递归式: 猜测其解为T(n)=O(nlgn),代入法要求证明恰当选择常数c>0,可有T(n)<=cnlgn。假定此上届对所有m < n成立,代入得到: 其中只要c>=1,最后一步即成立。注意到对n=1,边界条件...原创 2018-01-01 13:43:10 · 298 阅读 · 0 评论 -
算法导论 第4章 分治策略(1)
算法导论 第4章 分治策略(1)分治策略 的三个步骤:分解为若干子问题,子问题形式与原问题相同,但规模更小递归地解决子问题,若子问题规模足够小则停止递归,直接求解合并为原问题的解式足够大需要递归求解的子问题称为 递归情况,不再需要递归的足够小的子问题称为 基本情况。求解递归式,即得到算法的Θ或O渐近界的方法的方法:代入法:猜测一个界,用数学归纳法证明递归树法:将递归...原创 2017-12-30 17:37:26 · 379 阅读 · 0 评论 -
算法导论 第1、2、3章 算法基础
算法导论 第1、2、3章 算法基础第1章 算法在计算中的作用算法 就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。第2章 算法基础排序问题: 插入排序 即不断地将下一个数字插入到已排序的数列中对应的位置: 包含元素1~j-1的子数组构成了当前已排序好的数字,剩余的子数组对应剩下待插入的数字。循环不变式 用于证明算法的正确性,三条性质:初始化:循环的第一原创 2017-12-28 10:58:50 · 285 阅读 · 0 评论 -
算法导论 第8章 线性时间排序
算法导论 第8章 线性时间排序比较排序 指在排序的最终结果各元素的次序依赖于它们之间的比较的排序算法。在最坏情况下,任何比较排序算法都需要做Ω(nlgn)次比较。因此堆排序和归并排序都是渐近最优的比较排序算法。本章讨论三种用运算而不是比较来确定排序顺序的线性时间复杂度的排序算法:计数排序基数排序桶排序计数排序计数排序 假设n个输入元素中的每一个都是在0~k区间的原创 2018-01-22 15:30:44 · 229 阅读 · 0 评论 -
算法导论 第7章 快速排序
算法导论 第7章 快速排序快速排序 是一种最坏情况时间复杂度Θ(n2),但平均时间复杂度Θ(nlgn)的排序算法,且Θ(nlgn)中隐含的常数因子非常小。它还能进行原址排序,占用空间小,所以在实际应用中通常是最好的选择。算法快速排序与归并排序一样也使用了分治思想:分解:将数组A[p…r]划分为两个子数组(可能为空):A[p…q-1]和A[q+1…r],使A[p…q-1]中每个原创 2018-01-15 09:28:10 · 252 阅读 · 0 评论 -
算法导论 第5章 概率分析和随机算法
算法导论 第5章 概率分析和随机算法考虑一个雇佣助理的问题,对于每一个出现的应聘者,若该应聘者比之前所有应聘者都好,则雇佣该应聘者。初始化时创建一个虚拟的应聘者编号0,他比其他所有应聘者都差,则过程如下: 该问题的费用模型并不关注执行时间,而是面试和雇佣产生的费用。面试费用较低为ci,雇佣费用较高为ch,则若m是雇佣人数,总费用为O(cin+chm)。应聘人数总是为n,因此只关注ch原创 2018-01-06 14:52:50 · 502 阅读 · 0 评论 -
算法导论 第6章 堆排序
算法导论 第6章 堆排序相比归并排序和插入排序,堆排序 的时间复杂度是O(nlgn)与归并排序相同,且具有与插入排序一样的空间原址性,即任何时候只需要常数个额外的元素空间存储临时数据。因此堆排序是一种集合了这两种算法优点的排序算法。堆排序引入了称为 堆 的数据结构,堆是一个数组,可以看成一个近似的完全二叉树,树上每个节点对应一个数组元素。另树的根节点为A[1],且给定一个节点的下标i,他的父节点下标原创 2018-01-10 15:47:10 · 239 阅读 · 0 评论 -
算法导论 第9章 中位数和顺序统计量
算法导论 第9章 中位数和顺序统计量在一个由n个元素组成的集合中,第i个 顺序统计量 是指该集合中第i小的元素,如最小值是第1个顺序统计量。中位数 是它所属集合的中点元素,本书中都指下中位数,即i=(n+1)/2向下取整。本章讨论 选择问题,即输出集合中第i小的元素。最小值和最大值若要确定一个n元素集合中的最小元素或最大元素,显然需要n-1次比较,即Θ(n)。若要同时找到最...原创 2018-03-26 14:36:05 · 326 阅读 · 0 评论 -
算法导论 第10章 基本数据结构
算法导论 第10章 基本数据结构栈栈实现了一种后进先出(LIFO)的策略,栈上的插入称为压入PUSH,删除称为弹出POP。栈的几种操作:三种栈操作的执行时间都为O(1)。队列队列实现了一种先进先出(FIFO)的策略,队列上的插入称为入队ENQUEUE,删除称为出队DEQUEUE。队列的操作:链表链表是一种各对象按线性顺序排列,其顺...原创 2018-04-24 10:57:43 · 280 阅读 · 0 评论