美文网首页
算法导论

算法导论

作者: program袁 | 来源:发表于2016-08-14 11:27 被阅读104次

算法,一直是我想去大公司路上的一块绊脚石,总觉得平时用不到,但是考试总要考,不管是否能用到,学习总归是好事,前不久买了本《算法导论》接下来的日子,我会把自己看到的关于算法东西写出来,用罗胖的话就是,读书是一件苦事,死磕自己,娱乐大家。

一、插入排序

先上伪代码:

INSERTION-SORT(A)

1.for j=2 to A.length

2.   key = A[j]

3.   //Insert A[j] into the sorted sequence A[1..j-1]

4.   i = j - 1

5.   while i > 0 and A[i] > key

6.       A[i+1] = A[i]

7.       i = i -1

8.     A[i+1] = key

听名字就容易理解,“插入”就像排队一样,最起码你前面有一个人,你插队插在他前面,才叫插入。因此,for循环就从j=2(本文是根据读《算法导论》编写,因此下标统一从1开始),也就是第二个数开始。排序肯定涉及到交换,交换肯定涉及到中间变量,第二行key就是这个中间变量。从队尾的前一个开始比较,因此第四行:i = j - 1,交换的条件要满足不能超过数组的一个,而且待排序的数要比前面的值大才能交换。接下来就是插入排序的精髓:尾部和倒数第二个交换后,之前的尾部(也就是现在的倒数第二个数)还是待排序(此时表示排序完成),因此它要和倒数第三个数进行比较,这时的待比较的下标就变为i = i-1,第7行和第8行应该可以换位置,只不过如果换位置A[i+1] = key就要变为A[i] = key.

ok,这就是插入排序了,过程就像打扑克的起牌过程,手里的牌由少变多,依次插入。

相关文章

  • 数据结构与算法参考书籍

    数据结构与算法分析 算法 算法导论 java编程思想

  • 好文章索引

    算法 《算法导论》快速指南:我是如何10天入门算法导论的。 - 渗透之美 - 知乎专栏 推荐内容索引 - 老赵点滴...

  • 算法导论笔记

    读算法导论 记录一下读算法导论的过程 1.算法 如果问我什么是算法(思考中) 利用数据结构,考虑时间以及空间效率,...

  • 给我巨大影响的技术书籍

    算法《算法概论》《算法设计与分析基础》 Anany Levitin《算法引论》Udi Manber《算法导论》《什...

  • 参考书籍

    《啊哈! 算法》 《算法导论》(原书第三版)

  • C++快速排序(算法),小白必备!拿走不谢!

    <算法导论>上面的算法逻辑 QUICKSORT(A, p, r)//快速排序算法 if (p < r ) { q ...

  • 快排【算法导论】

    注:学习算法导论,按照标准伪代码理解翻译为java实现,如有兴趣理解整个过程的细节,建议阅读《算法导论》第7章:快...

  • 算法导论

    分析 loop-invariant • A technique to prove that an algorith...

  • 《算法导论》

    算法是思维逻辑的抽象,为效率而生。

  • 算法导论

    算法,一直是我想去大公司路上的一块绊脚石,总觉得平时用不到,但是考试总要考,不管是否能用到,学习总归是好事,前不久...

网友评论

      本文标题:算法导论

      本文链接:https://www.haomeiwen.com/subject/azeysttx.html