最近正在看一部大著《算法导论》,这本书无论从严密还是从思维上面都达到了一个难以企及的高度。里面的算法分析与设计基本上都在理论性上,如果想实用的话自己还需要看点其它的东西。接下来,就自己学了的前两章做一个总结。

  1. 第一章:算法在计算中的作用:算法可以理解为把输入转化为输出的计算步骤的序列。算法的重要性不言而喻,不仅给你找工作,从事某些行业带来便利,而且这代表这一种思维方式,去解决问题的做法。学习本书的目的不仅仅是了解这些算法,更重要的是学会自己去设计算法,分析自己设计的算法。分析算法主要是分析算法的正确性,及算法的效率,本书中的算法分析主要分析时间复杂度。

  2. 第二章:算法基础,在上一章对算法有了一个大概的了解之后,这一章开始讲述一些简单的算法。首先是插入排序,先上伪码:

for i=2 to A.lengthkey=A[i]j=i-1while(A[j]>key and j>0)A[j]=A[j-1]j=j-1A[i+1]=key

这个插入排序的代码比较简单,不需要多解释,然后利用循环不变式证明了插入排序的正确性,循环不变式类似于数学归纳法,找到初始条件,即循环迭代开始之前是否满足条件,之后用数学归法的思想去证明能够逐步递推,最后判断结束的时候能否满足条件即可。接下来是算法分析,需要一定的数学基础,插入排序的时间复杂度为O(n^2)。

接下来是归并排序,其思想是:先将数据看成每组数据只有一个元素,然后将两组合并起来,相当于把两组有序的数据排序。需要开辟一组临时空间,然后逐个比较,赋值到新开辟的空间即可。

MERGE_SORT(A,p,r)
if  p<rq=(p+r)/2                 //将数组分解成两个数组MERGE_SORT(A,p,q)         //递归归并MERGE_SORT(A,q,r)MERGE(A,p,q,r)

归并排序是一种分治的思想,就是将大问题逐步分解成小问题,解决小问题之后,将这些合并起来,便将整个问题解决了。归并算法的时间复杂度可以用二叉树的思想分析,得到时间复杂度为O(nlgn)。
在思考题中,出现了一道冒泡排序的题,这是一个比较常见的排序算法。

算法导论第一,第二部分总结相关推荐

  1. 算法导论 第一部分 第四章-分治策略

    算法导论 第一部分 第四章-分治策略 我们知道分治策略,就是3个步骤,分解.解决.合并. 子问题足够大,需要递归解决,叫做递归情况. 子问题足够小,就进入了基本情况. 递归式 递归式可以很方便的表示算 ...

  2. 我眼中的算法导论 | 第一章——算法在计算中的作用、第二章——算法基础

    一个小白的算法学习之路.读<算法导论>第一天.本文仅作为学习的心得记录. 算法(Algorithm) 对于一个程序员来说,无论资历深浅,对算法一词的含义一定会或多或少有自己的体会,在< ...

  3. 算法导论/第一部分_基础知识

    算法导论: 基础知识 Chapter 1 算法在计算中的作用 1.1 算法 1.2 作为技术的算法 Chapter 2 算法基础 2.1 插入排序 练习: 2.2 分析算法 插入算法的分析 增长量级 ...

  4. 《算法导论3rd第二十五章》所有结点对的最短路径问题

    前言 本章节,我们考虑"如何找到一个图中所有结点之间的最短路径"问题.我们通过运行|V|次上章节的单源最短路径算法解决所有结点对之间的最短路径问题,只需要每一次使用一个不同的结点作 ...

  5. 《算法导论》第二章 入门

    2.1 Insertion sort Pseudocode is used to specify a given algorithm in English. Issues of data abstra ...

  6. 《算法导论3rd第二十章》van Emde Boas树

    前言 前面介绍的二叉堆,红黑树以及斐波那契堆,其重要的操作都要O(lgn).当特定条件下,能否够规避Ω(lglgn)下界的限制?在本章中,我们将看到:van Emde Boas树支持优先队列操作及一些 ...

  7. 麻省理工学院《算法导论》(MIT - Introduction to Algorithms)

    关于课本的介绍如下: 本书自第一版出版以来,已经成为世界范围内广泛使用的大学教材和专业人员的标准参考手册.本书全面论述了算法的内容,从一定深度上涵盖了算法的诸多方面,同时其讲授和分析方法又兼顾了各个层 ...

  8. 《算法导论》——MergeSort

    前言: 在今后的日子里,我将持续更新博客,讨论<算法导论>一书中的提到的各算法的C++实现.初来乍到,请多指教. 今日主题: 今天讨论<算法导论>第二章算法基础中的归并排序算法 ...

  9. MIT的算法导论课程资料

    MIT的算法导论第一节课上,教授就说得了算法的performance的重要性,并非简单的只是快一点,慢一点,而是整个解决方案可行与不可行的差别.作为一个学生来说,在<算法导论>和<计 ...

最新文章

  1. 完整恢复模式下的备份/恢复
  2. Oracle创建表空间、用户、分配权限语句
  3. 怎么把图片存入mysql_如何把图片存储到mysql数据库中
  4. 75的写的自己情感经历(转贴自天涯社区)
  5. 点分治经典_动态点分治
  6. 漫步微积分二十六——Sigma符号和一些特殊和
  7. 优秀的电商平台Jshop栗子
  8. mysql的可视化工具_Mysql可视化工具Navicat的基本使用
  9. 工业数据采集网关的特点及应用场景
  10. 组织行为学笔记-第一章
  11. MYSQL选修课的心得体会_选修课心得体会
  12. 问题 C: 逃离机场
  13. 物品分类游戏html5,物品的用途分类教案
  14. C#文字播放语音功能System.Speech类库的使用
  15. python中extend什么意思_python中extend是什么意思
  16. RigNet神经网络模型自动绑定骨骼
  17. element-ui el-table 表格渲染错位以及高度计算错误问题
  18. 支付宝付款页面html,支付页面.html
  19. 摩拜服务器维护,摩拜单车云服务器
  20. 黎明觉醒火种测试服务器维护,黎明觉醒3月25日开启火种测试

热门文章

  1. android 测试机 知乎,appium 自动化测试之知乎Android客户端
  2. 全网最全AD16——原理图绘制
  3. t00ls.net关闭了
  4. Program received signal SIGFPE,Arithmetic exception.
  5. wheelib: 一个为编程学习而生的C语言轮子库
  6. Chrome浏览器屏蔽百度推广
  7. (十二)office2016-excel快速识别身份证号是男是女
  8. R绘图: figure margins too large错误
  9. 获取城市a-z jso列表
  10. HTML、CSS要点精华