• Algorithm-4th part I 学习进度 (7/12)


    cousera跟着书的原作者学习《算法》第四版。记录以下学习进度。

    课后习题代码见我的GitHub

    2018.09.22 : Priority Queues

      使用完全二叉树实现优先队列

      传统算法都好神奇,这里只需要用一个数组就可以表示完全二叉树。然后通过这个完全二叉树实现优先队列、优先排序。

      然后作业的数字推盘游戏实现前完全没有头绪怎么做,实际上就是一个启发式搜索,使用了优先队列来判断下一个搜索方向。优雅的实现 ​​​​

    2018.09.18 : Mergesort

      归并排序,迭代的方法来实现的。现在感觉过视频的方法记忆不太深刻,要搭配这多写点代码了。

    2018.09.11 : Elementary Sorts

      学习了三个初级排序方法,选择排序,插入排序,希尔排序。希尔排序通过改造插入排序,只增加少量代码,并且不适用额外空间的情况下,加快了排序速度,很适合嵌入式或简陋的环境下使用。之后又讲了洗牌,小bug造成大错误啊,要训练自己少犯。

    2018.09.11 : Stacks and Queues

      讲栈和队列,虽然之前对定义有了解,但是并没有深入了解、实现。这里学会了使用链表和变长数组实现,并且讨论了两者的区别,见下表。变长数组占用更少的内存,两者平摊时间相同,但是最坏的情况(需要改变数组长度)时,单次时间较长。当需要考虑系统实时性时,使用链表实现,其他情况可使用变长数组。

      内存 平摊时间(amortized time) 单次时间
    链表 40N constant O(1)
    变长数组 8N~32N constant O(N)

      对于java语言特性,学到了泛型编程和迭代器。都是好东西,要多用用。

      算法题真的能惊艳到自己,这一节中,两个题让我很震惊。

        一个是使用两个栈来实现队列,并要求做到constant amoritized time.具体的解答在SO上有。how-to-implement-a-queue-using-two-stacks

        另一个就是题目里的extra部分,学到了一个叫水塘抽样(Reservoir sampling)的方法,这个真的节约内存。具体见wiki:水塘抽样

    2018.09.02 : Union−Find & Analysis of Algorithms

      入个门,简单了解了java语法,完成了作业。系统自动批改作业反馈真详细啊,这应该就是写的好的单元测试。

  • 相关阅读:
    网页前端开发,对于图片慢加载简介
    createDocumentFragment
    mobile端
    Handler对象
    移动应用表单设计秘籍
    【194】Windows 上使用 wget
    【193】◀▶ PowerShell 官方资料索引
    【192】PowerShell 相关知识
    【191】◀▶ Powershell 命令集 Cmdlets
    高性能MySql进化论(九):查询优化器常用的优化方式
  • 原文地址:https://www.cnblogs.com/huipengly/p/9625622.html
Copyright © 2020-2023  润新知