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 ...
随机推荐
- C#编译器选项(目标平台)
用vs编译C#项目的设置中,“属性-生成-目标平台”有anycpu,x86,x64等选项. anycpu(默认值)将编译程序集为使其在任意平台上都可以运行. 在任何可能的时候,应用程序作为 64 位进 ...
- mysql字符太长警告
用navicateclient,打开相应的数据库. 打开函数.找相应的val()函数,进行编辑,就能够!编辑范围为4000
- Mysql 基本操作指令+增删查改
nqinx是web前端服务端 负载均衡(软件)可以将用户请求调度到几台机器的nqinx上去做 ,一般都有两个负载均衡,一个做备用硬件的要比软件的好,但是一般公司都用软件实现数据库软件其实也是一个服务端 ...
- MyBatis学习(二):与Spring整合(非注解方式配置MyBatis)
搭建SpringMVC的-->传送门<-- 一.环境搭建: 目录结构: 引用的JAR包: 如果是Maven搭建的话,pom.xml的配置如下: <?xml version=" ...
- jQuery UI Autocomplete是jQuery UI的自动完成组件
支持的数据源 jQuery UI Autocomplete主要支持字符串Array.JSON两种数据格式. 普通的Array格式没有什么特殊的,如下: ? 1 ["cnblogs" ...
- 对JavaBean创建的一点改进
在看了<Effective Java>Item2中对JavaBean的描述后,再结合Item1和Builder模式,遂想有没有其他方式避免JavaBean创建的线程安全问题呢? 以如下Ja ...
- Apache/2.4.9启动错误:AH01630: client denied by server configuration
在升级Yii框架1.11->2.0beta时,PHP升级到5.5.顺带升级Apache2.2.x到2.4.9. 把原有vhost配置移植过来,出现Apache启动错误: AH01630: cli ...
- mongodb 安装、启动
MongoDB 之 你得知道MongoDB是个什么鬼 MongoDB - 1 最近有太多的同学向我提起MongoDB,想要学习MongoDB,还不知道MongoDB到底是什么鬼,或者说,知道是数据 ...
- javaweb开发之jsp
一.WEB应用的目录结构 通常我们是在IDE中创建web应用程序,IDE自动为我们实现了WEB的目录结构,下面来看如何徒手创建一个WEB程序. 首先来看一下Tomcat自带的一个web应用的目录结构 ...
- select version();desc mysql.user;
D:\wamp64\wamp\bin\mysql\mysql5.6.17\bin>mysql -hgoDev -uroot -ppasswordWarning: Using a password ...