![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Introduction to Algorithms
苏雅乐图
每天进步一点点
展开
-
算法导论 学习笔记 第五章 概率分析和随机化算法
这一章主要是引用一个聘用秘书的例子来引入两个概念,概率分析和随机化算法。概率分析就是分析每一种输入情况的概率,依次来获得期望的运行时间随机化算法用一个指示随机变量来随机化输入。就是输入的顺序将对算法的运行时间不会产生影响。这一章我没有仔细看,很多地方没看懂。先略。以后补。原创 2017-08-03 11:32:40 · 332 阅读 · 0 评论 -
算法导论 学习笔记 第六章 堆排序
这一章主要讲了两个点:1.堆排序。2.堆排序的应用(优先级队列)堆排序堆堆是一种完全二叉树(不理解)。反正是一种树状的数据结构了吧。有几种操作。求左子节点(2i),求右子节点(2i+1),求父节点(i/2)下取整。保持最大堆结构(max-heapfiy)建堆(building a heap)然后这些属性就可以实现堆排序了书上的伟大码比较容易看懂,然后自己再画一画就可以理解了。优先级队列这个就原创 2017-08-03 11:50:53 · 356 阅读 · 0 评论 -
算法导论 学习笔记 第七章 快速排序
分两部分讲:快速排序和随机化快速排序其中很多关于分析的部分并不怎么懂,所以先略过...快速排序快速排序的核心思想还是分治法。选取一个主元(一般选择第一个,或者是最后一个元素)递归的将整个数组分成两部分。而这个两部分的左边部分的元素全部小于等于主元,右边的部分大于主元。快速排序是稳定的排序,并且是原地排序,平均运行时间是nlogn。就像集合了归并排序和插入排序两者的优点下面以分治法的三步骤来分原创 2017-08-03 17:59:55 · 381 阅读 · 0 评论 -
算法导论 学习笔记 第八章 线性时间内的排序
这一主要讲四个内容,第一个是证明比较排序的最坏情况的下界,接下来讲了三个在某种假设的情况下可以线性时间内运行的排序算法:计数排序,基数排序,桶排序。证明排序算法的下界用一个决策树来证明,决策树的深度就是运行时间。通过计算得到结果: 任何比较排序算法在最坏情况下的运行时间要求是Ω(nlgn)。计数排序计数排序做的假设是待排序的数组元素都将不超过某个整数k,而且k=O(n)。按大白话来讲,就原创 2017-08-04 11:33:20 · 312 阅读 · 0 评论 -
算法导论 学习笔记 第一章
三个问题:1,什么是算法? 2,为什么学习算法是值得的? 3,在计算机中算法相对于别的技术作为一个什么样的角色?什么是算法?学习算法导论两周,有一些感受,第一感觉真是算法导论真的是一本非常通俗易懂的书,很多时候你想写一些心得和扩展都没得写。。书上都有了。进入主题。什么是算法?算法就是一些将输入变成输出的计算步骤的序列。书上讲算法是用来解决那计算性问题的。比如排序问题。算法的正确性。如果说一个算原创 2017-07-26 11:31:44 · 635 阅读 · 0 评论 -
算法导论 学习笔记 第二章 算法入门
首先附上一个算法导论学习指南链接CRLS 学习指南。这是我学习最重要的参考文章第二章 算法入门 这一章主要讲了三个部分,第一部分是通过插入排序引出了伪代码/循环不变式两个概念。第二部分分析算法,首先提出RAM模型,然后通过分析插入算法分析解释了复杂度,最坏/最好的情况,还稍微提了一下算法运行时间的增长率。插入排序对于插入排序的解释真可谓是通俗易懂啊。我以前一直是懵懵懂懂插入排序的含义,就算是可以实原创 2017-07-26 19:39:24 · 590 阅读 · 0 评论 -
算法导论 学习笔记 第三章 函数的增长
这一章讲了两大部分。第一部分是讲了渐进符号,有theta,bigO,bigΩ,littleo,littleΩ。第二部分讲了几个常见的数学知识。渐进符号Θ符号渐进符号表示的都是算法的输入规模无限大的时候的运行时间的增长率。例如:f(n) = Θ(n^2) 表示的是在n足够大的时候f(n)的增长率是差不多n的二次方。下面给出准确定义: Θ(g(n)) = {f(n):存在两个常数c1和原创 2017-07-27 12:35:13 · 710 阅读 · 0 评论 -
算法导论 学习笔记 第九章 中值和顺序统计
本章其实只讲了一个问题,那就是如何从一个数组当中用线性时间内找出第i个小的元素。最小值和最大值这个就比较简单了,直接挨个比,运行时间就是线性的,而且这就是最好的办法。如何同时找出最小值和最大值咧?这个其实也简单,那就记录两个数据呗。运行时间是找单个的两倍。但是这个就不是最好的办法了。有一个比这个更好的方法。上面的办法是每一个元素需要比较两次,而下面的方法是每两个元素需要比较三次。比上一个好一点原创 2017-08-04 18:50:42 · 461 阅读 · 0 评论 -
算法导论 学习笔记 第四章 递归
Θ(n(logba))\Theta(n^{(log_b a)}) Θ(lga)\Theta(lga)这一章主要是介绍了三种求运行时间的方法。这三种方法都是解决递归问题的。就像分治法这种问题的算法的运行时间。这三种方法分别是替换法/递归树方法/主方法4.1替换法(The substitution method)这个方法有两个步骤:1.猜一个答案 而比较悲催的是现在没有一个通用的方法去猜正原创 2017-07-27 17:22:43 · 650 阅读 · 0 评论