算法学习
文章平均质量分 57
gfeng_ict
这个作者很懒,什么都没留下…
展开
-
算法导论学习笔记-第2章 算法入门
2.1 插入排序 插入排序是一个对少量元素进行排序的有效算法,工作原理类似于扑克牌的插入过程:在排好子数组A[1..j-1]后,将元素A[j]插入,形排好序的子数组A[1..j]。 伪代码: INSERTION-SORT(A) for j 0 and A[i]>key do A[i+1] C代码: void insert_sort(int a[],int n){ int j; for(j = 1; j = 0 && a[i] > key原创 2010-07-11 14:20:00 · 462 阅读 · 0 评论 -
算法导论学习笔记-第3章 函数的增长
1、θ记号 对一个给定的函数gn,用θg(n)来表示下面的函数集合: θ(g(n))= { f(n):存在正常数c1,c2和n0,使对所有的n≥n0,有0≤c1g(n)≤f(n)≤c2g(n) }对任一个函数f(n),若存在正常数c1,c2,使当n充分大时,f(n)能被夹在c1g(n)和c2g(n)中间,则f(n)属于集合θ(g(n))。一般来说,对任何一个多项式p(n=i=0daini,其中ai是常数并且ad>0,有p(n)= θnd。原创 2010-07-15 21:30:00 · 464 阅读 · 0 评论 -
算法导论学习笔记-第4章 递归式
本章介绍了三种解析递归式的方法。 4.1 代换法 用代换法解递归式需要两个步骤: 1)猜测解的形式; 2)用数学归纳法找出使解真正有效的常数。 4.2 递归树方法 画出一个递归树是一种得到好猜测的直接方法。在递归树中,每一个结点都代表递归函数调用集合中一个子问题的代价。我们将树中每一层内的代价相加得到一个每层代价的集合,再将每层的代价相加得到递归是所有层次的总代价。 4.3 主方法 主方法给出了求解如下形式的递归原创 2010-07-19 11:54:00 · 523 阅读 · 0 评论 -
算法导论学习笔记-第5章 概率分析和随机算法
总结:这章由雇佣问题引出了概率分析和随机算法。概率分析一般用于确定一些算法的运行时间。而随机化算法用来强行使算法的输入符合某种概率分布,随机化算法的行为不仅由输入决定,还要由一个随机数生成器所生成的值来决定。 1、概率分析可以利用指示器随机变量来进行概率分析,获得事件发生的期望值。引理:给定样本空间S和S中的事件A,令XA=I{A},则E[XA]=Pr{A}2、随机算法概率分析是在输入上作了假设,而在随机算法中,随机发生在算法上,而不是发生在输入分布上,也就是对于同一个输入,由于引入转载 2010-07-19 20:28:00 · 562 阅读 · 0 评论 -
算法学习导论学习笔记-第6章 堆排序
6.1 堆 堆是一种完全二叉树,因此可以用数组A来表示。树的根为A[1],给定了某个结点的下标i,其父结点PARENT(i)、左儿子LEFT(i)、右儿子RIGHT(i)的下标可以简单地计算出来: PARENT(i) return i/2 LEFT(i) return 2i RIGHT(i) return 2i+1 二叉堆有两种:最大堆和最小堆。在这两种堆中,结点内的数值都要满足heap property。在最大堆中,max-heap property是指除了根结点以原创 2010-07-24 15:36:00 · 402 阅读 · 0 评论 -
算法导论学习笔记-第7章 快速排序
7.1 快速排序的描述 快速排序是基于divide-and-conqueue模式的。 QUICKSORT(A,p,r) if p x; 3) 如果k = r,则A[k] = x。 PARTITION在子数组A[p..r]上的运行时间为θ(n),其中 n=r-p+1 7.2 快速排序的性能 最坏情况划分 快速排序的最坏情况划分行为发生在划分过程产生的两个区域分别包含n-1个元素和0个元素的时候。假设算法的每一次递归调用中都出现了这种不对称划分,则算法的运行时间可以递归地表示原创 2010-07-31 16:35:00 · 637 阅读 · 0 评论 -
算法导论学习笔记-第8章 线性时间排序
8.1 排序算法时间的下界 比较排序:the sorted order they determine is based only on comparisons between the input elements. 比较排序可以被抽象地视为决策树。 定理8.1 任意一个比较排序算法在最坏情况下,都需要做Ω(nlgn) 次的比较。 推论8.2 堆排序和合并排序都是渐近最优的比较排序算法。 8.2 计数排序 计数排序假设n个输入元素中的每一个都是介于0到k之间的整数,此处k为某个整数。当k=O(n原创 2010-08-16 20:10:00 · 469 阅读 · 0 评论 -
算法导论学习笔记-第9章 中位数和顺序统计学
在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。 9.1 最小值和最大值 找最小值:依次查看集合中的每个元素,并记录比较过程中的最小元素。 MINIMUM(A) min = A[1] for i=2 to length[A] do if min > A[i] then min = A[i] return min 同时找出最小值和最大值:先将一对输入元素互相比较,然后把较小者与当前最小值比较,把较大者与当前最大值比较,因此每两个元素需要3次比原创 2010-08-16 21:48:00 · 736 阅读 · 0 评论