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语法,完成了作业。系统自动批改作业反馈真详细啊,这应该就是写的好的单元测试。
Algorithm-4th part I 学习进度 (7/12)的更多相关文章
- 2019面向对象程序设计(java)课程学习进度条
2019面向对象程序设计(java)课程学习进度条 周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 1 20/10 1/0 5 九九 ...
- 201871010106-丁宣元 《2019面向对象程序设计(java)课程学习进度条》
<2019面向对象程序设计(java)课程学习进度条> 周次 (阅读/编写)代码行数 发布博客量/评论他人博客数量 课余学习时间(小时) 学习收获最大的程序阅读或编程任务 1 25/10 ...
- python学习之旅1-2(基础知识)
三,python基础初识. 1.运行python代码. 在d盘下创建一个t1.py文件内容是: print('hello world') 打开windows命令行输入cmd,确定后 写入代码pytho ...
- N47-冯天驰-学习进度计划表
马哥就业课程学习进度规划--N47-冯天驰 第一周 6.1-6.7 8. 06- ...
- DHTML 教程学习进度备忘
书签:跳过:另外跳过的内容有待跟进 __________________ 学习资源:W3School. _________________ 跳过的内容: 1.这个学习进度和前面几个学习进度,只是学习了 ...
- 第三周学习进度条+PSP0过程文档
第三周学习进度条 第三周 所花时间(包括上课) 14:30-15:35(65)+19:00-21:20(140)+17:52-19:00(68)+19:10-20:45(95)+21:00-22 ...
- NABCD框架(作业和事件的定期提醒)及第八周学习进度条
NABCD框架(作业和事件的定期提醒): N(need,需求): 你的创意解决了用户的什么需求? 我们的创意能够一定程度上督促我们的用户(学生)尽快完成自己近期的任务或者是作业.我们认为如果增设定时提 ...
- 本周java 学习进度报告
本周java 学习进度报告 本周对我的感触很深,因为这是我初学java 语言的第一周,我认识到java 和c语言是有很多的不同之处和相同之处.我这几天几乎是在研究java 基础入门知识,而并没有太多的 ...
- 深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全
深度学习与计算机视觉(12)_tensorflow实现基于深度学习的图像补全 原文地址:Image Completion with Deep Learning in TensorFlow by Bra ...
随机推荐
- xcode 5.0 以上去掉icon高亮方法&iOS5白图标问题
之前的建议方法是把在xxx.info.plist文件里把 icon already includes gloss and bevel effects 设置YES 在Xcode5下,重复实现不成功,今天 ...
- yum安装zabbix监控
公司的服务器由于没有监控软件监控,最感觉不安全,就开始研究zabbix的安装,最后找到一个最简单的安装方法,在这里记录一下,方便以后的查阅 1.安装zabbix官方的软件配置仓库 rpm -ivh h ...
- Maven - 下载JAR包
进入Spring官网http://projects.spring.io/spring-framework/假设我们想下载Spring发现仅仅能 通过Maven或Cradle进行下载了. 以下以Spri ...
- MongoDB之增删改查(一)
本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...
- Golang RPC 性能测试
Golang RPC 性能测试 | KDF5000 http://kdf5000.com/2017/03/28/Golang-RPC-性能测试/
- 使用 Visual Studio Code 运行 C# 及 Java 程序
背景 很多情况下,我只是想要编写一个非常简单的 C# 或者 Java 程序,只有几行代码,看看运行结果而已.虽说 Visual Studio / Eclipse / IntelliJ IDEA 功能强 ...
- Android笔记之自定义对话框
效果如下图 对话框布局 dialog_uninstallation_confirmation.xml <?xml version="1.0" encoding="u ...
- CMake命令笔记
project 为整个工程设置名称.版本和启用语言 project(<PROJECT-NAME> [LANGUAGES] [<language-name>...])projec ...
- 录音-树莓派USB摄像头话筒
实测可用: sudo arecord --duration=10 --device=plughw:1,0 --format=cd aaa.wav sudo arecord --duration=10 ...
- AndroidContactsTest.java
以下代码使用ContactManager.apk进行测试 package com.saucelabs.appium; import io.appium.java_client.AppiumDriver ...