写在前面
一学期又过完了,回想这学期的java课程,有在国庆节前一天晚上熬夜到两点的记忆,也有和王老师课上课下说骚话的有趣经历,
![](https://img2018.cnblogs.com/blog/1333460/201812/1333460-20181225172609294-504054024.png)
更有和小组大佬们肝app的充实体验,可以说是收获多多。而且一想到今后更不用写博客,心里更是开心的一匹(希望这不是一个flag)。所以,就再用这篇博客给划上一个完满的句号。
### 每周作业链接汇总
- [第一周学习总结](https://www.cnblogs.com/326477465-a/p/9613496.html)
- 简要内容:初步认识数据结构的相关知识,了解并掌握时间、空间复杂度等概念。
- [第二周学习总结](https://www.cnblogs.com/326477465-a/p/9664750.html)
- 简要内容:数据结构——栈的学习,栈是一种先进后出的数据结构,可使用数组与链表实现。进一步强化对链表的代码实现。
- [第三周学习总结](https://www.cnblogs.com/326477465-a/p/9704429.html)
- 简要内容:学习了队列这种数据结构,以及环形队列。如何使用链表和数组实现队列,不同的实现方式有何区别与特点。
- [第四周学习总结](https://www.cnblogs.com/326477465-a/p/9751996.html)
- 简要内容:线性表的学习,无序线性表与有序线性表的区别,如何在栈和队列的基础上实现线性表。
- [第五周学习总结](https://www.cnblogs.com/326477465-a/p/9801709.html)
- 简要内容:查找算法、排序算法的学习。其中新增了之前未掌握的二分查找、快速排序、归并排序、冒泡排序等算法。
- [第六周学习总结](https://www.cnblogs.com/326477465-a/p/9853406.html)
- 简要内容:对于非线性数据结构的学习,分析了树的四种遍历方法,探究了学习树时遇到的问题。
- [第七周学习总结](https://www.cnblogs.com/326477465-a/p/9899047.html)
- 简要内容:树的进一步学习,主要是AVL树和红黑树。探究AVL树在实现时出现的代码问题。
- [第八周学习总结](https://www.cnblogs.com/326477465-a/p/9940020.html)
- 简要内容:对树的一种变形,堆的学习,学习了堆的分类以及处理代码实现环节的问题。
- [第九周学习总结](https://www.cnblogs.com/326477465-a/p/9976176.html)
- 简要内容:学习了图的有关知识。例如,无向图,有向图,拓扑图,以及和树的遍历方法类似的广度优先遍历与深度优先遍历。
- 自认为写得最好一篇博客是?为什么?
- - 当学姐指出我博客存在的问题后,我对自己的学习态度进行了反思,找出了在学习过程中存在的几个问题。例如,总是在最后关头仓促应付完成,学习过程没有深度与厚度,代码实践过程中没有太多动手。一致与总是浮于四处“凑”代码问题和教材问题的情况。同时,但是正在学习树这一数据结构,难度较大,我及时对自己的学习态度进行改正。保证付出更多的时间在数据结构上,多看“他山之玉”,对于不懂的问题,与周围同学进行探讨,从而解决了问题。在代码实践上,对于自己不理解的区域,不断的敲代码,从而加深了理解。因此写出了这篇我自认为比较好的博客。
- 作业中阅读量最高的一篇博客是?谈谈经验
- 说实话,我的博客一直比较普通,所以基本没什么访问量。博客更像是一个笔记,将自己的学习过程记录上去,因此,在写博客的时候用心写,记录自己的问题和分析、处理问题的过程就足够了。这就是我写博客的经验。
### 实验链接汇总
- [实验一](https://www.cnblogs.com/326477465-a/p/9752004.html)
- 简要内容:对链表、数组的实践,通过本次实验熟练掌握其代码实现的部分原理
- [实验二](https://www.cnblogs.com/326477465-a/p/9940020.html)
- 简要内容:对树等一系列数据结构进行实验,从而进一步强化对树这一数据结构的掌握和了解。
- [实验三](https://www.cnblogs.com/326477465-a/p/10064967.html)
- 简要内容:将查找、排序算法同数据结构相结合,从而对整个学期内容进行回顾。
### 团队项目报告链接汇总
- [**第一周阶段总结**](https://www.cnblogs.com/PFrame/p/10016819.html)
- 团队展示
- 团队选题
- 团队选题
- 团队任务计划
- 采访老师或有经验的学长
- [**需求规格说明书**](https://gitee.com/CS-IMIS-23/zhr20172322_javaProgramming/blob/master/docs/%E9%AB%98%E8%83%BD%E5%A4%A9%E6%B0%94.md)
- [**第二周阶段总结**](https://www.cnblogs.com/PFrame/p/10056176.html)
- 规格说明书
- 修订历史
- 上次的《需求规格说明书》初稿有哪些不足?
- 团队编码规范
- 使用Powerdesigner绘制ER图
- 后端架构设计
- 团队分工
- (一)核心需求的优先级
- (二)确定子功能的工作量
- (三)TODOList及燃尽图
- 本周分工及工作量比例
- 参考资料
- [**冲刺周**](https://www.cnblogs.com/PFrame/p/10079491.html)
- [**Day1—领航**](https://www.cnblogs.com/PFrame/p/10079473.html)
- [**Day2**](https://www.cnblogs.com/PFrame/p/10091959.html)
- [**Day3**](https://www.cnblogs.com/zhangyeye233/p/10099192.html)
- [**Day4**](https://www.cnblogs.com/yu757503836/p/10102943.html?tdsourcetag=s_pctim_aiomsg)
- [**Day5**](https://www.cnblogs.com/yu757503836/p/10110551.html)
- [**Day6**](https://www.cnblogs.com/yu757503836/p/10116478.html)
- [**Day7—总结**](https://www.cnblogs.com/PFrame/p/10126823.html)
### [代码托管连接](https://gitee.com/qq32644765/projects)
- 代码总量:10227 。应当是达到了学期的要求
![](https://img2018.cnblogs.com/blog/1333460/201812/1333460-20181225172729247-1915388383.png)
- 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
- 加点代码,改点代码在我看了类似于一个单步调试的过程,对于一段自己不能理解的代码,但是看,我们一时可能无法了解。但是,注释上一段,将其中的几个局部变量输出,看看同正常运行相比会发生什么。同理,如何真正判断是否理解这段代码呢?那就给它加上些功能,如果能实现,就意味着我们理解了它,让它为我所用。
- 积极主动敲代码做到没?教材实践上有什么经验教训?
- 在学期初,我确实怠慢了不少。但是学期中后期,基本能实现积极主动敲代码。对于教材,我们要做到尽信书不如无书的思路,尤其是这本教材,确实存在着诸多问题,因此我们要辩证的去看待书上的内容。
课堂项目实践
- 课堂实践ASL
- 哈夫曼编码测试
- 时间复杂度分析: 时间复杂度分析,用大O记法写出时间复杂度。
- ArrayStack的实现和测试: 完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。
- 链表插入: 写出链表中节点插入的操作代码。
- 链表实践: 链表练习,要求实现下列功能:
通过键盘输入一些整数,建立一个链表
实现节点插入、删除、输出操作
- 使用冒泡排序法或者选择排序法根据数值大小对链表进行排序
- 第四章代码检查: 运行PP28,PP28页的程序,根据个人学号输入后缀表达式并计算。
- LinkedStack补全: 给出size、isEmpty和toString等方法的定义,以完成LinkedStack类的实现。
- 第五章代码检查-凯撒密码: 代码检查P72-P73,凯撒密码程序。
- 杨辉三角: 使用循环队列输出杨辉三角。
- 栈队列测试:
- 第六章代码检查: 运行PP6.8和PP6.11的程序
- 线性表实践: 定义一个商品类Product,需要包括商品名称、价格等信息,使用链式存储结构实现一个线性表,存储商店中的商品。支持插入、删除、选择排序、查找等功能,并进行简单测试。
- ASL测试: 已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?
输出后缀表达式。
- 三种查找算法练习:
- 哈希冲突处理实践: 把自己的学号加21,例如学号为1,把22添加到序列后面,使用链地址法,解决冲突。编程实现,并测试。
- 希尔排序测试:
- 树计算题: 计算题:
1.有1023个结点的完全二叉树,其高度是多少?叶结点数是多少?
2.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?
- 树的深度和叶子个数计算: 计算课本中背部疼痛诊断器中决策树的叶子节点个数?根据课堂介绍的递归树深度计算算法,计算决策树的深度。
- 中序和先序计算二叉树结构:若已知中序和先序序列,计算二叉树结构
- 层序遍历法实践: (1)使用递归实现层次遍历背部疼痛决策树,并按照层次顺序输出每个节点内容。(2)非递归的层次遍历法算法如下:
根结点入队;
从队头取元素, 并执行如下3个动作:
(1)访问该结点;
(2)如果该元素有左孩子,则左孩子入队;
(3)如果该元素有右孩子,则右孩子入队;
重复执行上述过程,直至队列为空。 此时,二叉树遍历结束。按照上述算法,编程实现层序遍历,按照层序的方法,遍历并依次输出每个节点内容。
堆构造与排序: 根据关键字序列:36,30,18,40,32,45,22,50,构造一颗小顶堆,并排序?
- 堆排序测试: 根据关键字序列:36,30,18,40,32,45,22,50,利用数组构造一颗大顶堆,并排序。
- 十一链表练习: 画出十一链表结构。
- 最小生成树:
1.画出Prim算法的最小生成树的生成过程
2.画出Kruscal算法的最小生成树的生成过程
3.计算最小权值
Dijkstra(迪杰斯特拉)算法测试: 使用Dijkstra(迪杰斯特拉)算法计算单源(V1出发)最短路径。
- AOE练习:
1、求关键路径,v1和ve的值并写出具体步骤
2、画出图一可能的拓扑序列
3、画出图二所示无向图的邻接矩阵、邻接链表,并列出深度优先和广度优先遍历图所得的顶点序列。
4、写出图三的邻接矩阵,并用prim算法求最小生成树,画出产生过程
- 哈夫曼测试: 设有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。
给定一个包含26个英文字母的文件,统计每个字符出现的概率,根据计算的概率构造一颗哈夫曼树。并完成对英文文件的编码和解码。
- 课堂实践对提高应用能力有帮助吗?
- 有,在有限的时间里完成代码编程或者算法的理解应用确实考验着我们的平时的功底,同时通过实际操作来进一步的加深课本知识的理解
- 课堂实践上自己有什么经验教训?
- 课堂实践要求我们必须有预习和提前学习的意识,否则通过短短的课堂时间难以掌握某些较难的知识。
- 课堂实践上对老师有什么教学建议?
- 对于某些实践可以将其分成几个部分。比如理论性的部分较好理解,课堂上进行理论部分的测试,课下在当天完成代码实践的任务。从而更加合理的分配时间。
课程收获与不足
- 自己的收获(投入,效率,效果等)
- 这学期对于代码实现的部分我认为自己的动手能力有了较强的提高,掌握了一定的自我学习的方法。
- 自己需要改进的地方
- 改进自己的学习方法,多举一反三,多想一想新的思路,继续多和优秀的同学交流。
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
- 能够贯彻结对学习,尤其是我们小组的于欣月,余坤澎二位大佬,他们对于驽钝的我在学习上给提供了无微不至的帮助与关心。使得我除了日常划水以外学习到了许多的知识。
问卷调查
- 你平均每周投入到本课程有效学习时间有多少?
- 20小时左右
- 每周的学习效率有提高吗?你是怎么衡量的?
- 有,尤其是在难度较大的地方,效率更高。
- 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
- 有一定的帮助,不过在手机端不太方便可能是我设置的问题。
- 你觉得这门课老师应该继续做哪一件事情?
- 翻转课堂
你觉得这门课老师应该停止做哪一件事情?
- 都挺合理的,我觉得王老师相对优秀!(舔狗甜到最后应有尽有)
- 二维码: