[算法导论]网易MIT算法导论课笔记(简略版)

Introduction to Algorithm

  • 说明lgn是以2为底的对数
  • 编译环境:g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
  • g++ -std=c++11 XX.cpp -o XX

第一课 算法分析

第二课 渐近符号、递归及解法

  • f(n)的值总位于c1g(n)与c2g(n)之间或等于它们,那么记f(n)=Θ(g(n))。
  • f(n)的值总小于或等于cg(n),那么记f(n)=O(g(n))。
  • f(n)的值总大于或等于cg(n),那么记f(n)=Ω(g(n))。
  • 用主方法求解递归式,
    如下图:

另外这一篇BLOG详细了介绍了这种方法的用途:BLOG

第三课 分冶法(Divide and Conquer)

  • 二分法 源码
  • 菲波那切数列 源码
  • 结:朴素递归算法用时太多,实用价值不大,自底向上算法效率为线性,较高,平时用较多,递归平方算法效率为对数级,且编程可实现,实用价值很大。并且经过测试,当n值变很大后,递归平方算法效率明显高于自底向上算法效率。BLOG

第四课 快排及随机化算法

  • 快速排序及随机快速排序 源码
  • Hoare的代码对快排有重复的情况运行的更好。
  • 随机化快速排序,其运行时间不依赖于输入序列的顺序Θ(nlgn),一般来说比归并快3倍。
  • 这篇博客对此进行了详细的介绍我就摘录了一些 BLOG
    自我小结:对随机产生的数组进行排序,1)可以发现插入排序没有优势、特别是数组比较大时耗时太多;2)快速排序、随机化快速排序、归并排序性能不错,然而两种快排比归并排序性能好点;3)当数据量变大时,可以看出性能排序为快速排序、随机化快速排序、归并排序、插入排序;4)由于这里的数组是由随机数产生的,没有显示出随机化快速排序的优势,但是当数组为已排序情况下随机化快排将比快排性能好。

第五课 线性时间排序

  • 在最坏情况下,任何比较排序算法都需要做Ω(nlgn)次比较。故堆排序和归并排序都是渐进最优的比较排序算法。
  • 计数排序 源码

它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)

源码中实现排序的代码是和计数排序一样的。
基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。

第六课 顺序统计、中值

  • 随机选择算法(一般选择这个) 源码 :

运行时间的复杂度期望是Θ(n),最坏的情况复杂度为Θ(n2)。

  • 最坏线性选择算法
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【内容简介】 本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全 面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规 划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算 法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等 内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。. 本书内容丰富,对本科生的数据结构程和研究生的算法程都是很实用的教材。本书在读者的职业生涯中,也是一本案头的数学参 考书或工程实践手册。 在有关算法的书中,有一些叙述非常严谨,但不够全面,另一些涉及了大量的题材,但又缺乏严谨性。《算法导论》将严谨性和全面 性融为一体。.. 本书深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。各章自成体系,可以作为独立的学习单元。算法 以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂。说明和解释力求浅显易懂,不失深度和数学严谨性。 本书自第1以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考书。第2增加了论述算法作用、概率分析与 随机算法、线性规划等几章。同时,对第1的几乎每一节都作了大量的修订。一项巧妙而又重要的修改是提前引入循环不变式,并在 全书中用来证明算法的正确性。在不改变数学和分析重点的前提下,作者将许多数学基础知识从第一部分移到了附录中,并在开始部 分加入了一些富有诱导性的题材。...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值