20162317 2016-2017-2《程序设计与数据结构》课程总结
总目录
每周作业链接汇总
每周作业目录
- 第一周作业
- 这一周我们主要学了:
- 算法复杂度的定义和计算
- 算法和效率的关系
- 算法的特点
- 时间复杂度和空间复杂度
- 这一周我们主要学了:
- 第二周作业
- 这一周我们主要学了:
- 泛型的使用
- 小组对构建之法的总结
- 这一周我们主要学了:
- 第三周作业
- 这一周我们主要学了:
- 查找的方法
- 不同查找方法的时间复杂度
- 排序的方法
- 不同排序方法的时间复杂度
- 这一周我们主要学了:
- 第四周作业
- 这一周我们主要做的是实验一
- 第五周作业
- 这一周我们主要学了:
- 集合
- 栈
- 数组实现栈
- 链表实现栈
- 这一周我们主要学了:
- 第六周作业
- 这一周我们主要学了:
- 队列
- 数组实现队列
- 链表实现队列
- 这一周我们主要学了:
- 第七周作业
- 这一周我们主要学了:
- 树
- 树的类型
- 数的实现
- 这一周我们主要学了:
- 第九周作业
- 这一周我们主要学了:
- 堆的定义
- 堆的作用
- 堆的应用
- 堆的实现
- 这一周我们主要学了:
- 第十周作业
- 这一周我们主要学了:
- 图的定义
- 图的类型
- 图的实现
- 这一周我们主要学了:
- 第十一作业
- 这一周我们主要学了:
- 哈希算法的类型
- 冲突以及解决冲突
- 装载因子
- 这一周我们主要学了:
实验报告链接汇总
实验报告目录
- 实验一
- 简要介绍:线性结构
- 实验二
- 简要介绍:树
- 实验三
- 简要介绍:查找和排序
- 实验四
- 简要介绍:图的实现与应用
- 实验五
- 简要介绍:数据结构的综合应用
团队项目报告链接汇总
代码托管链接
> 本学期目标已达成
- 加点代码,改点代码是理解的最好方式,谈谈你的心得
对待一段代码,如果只是读懂,这并不是真正的理解。要试着加点代码,改点代码。加点代码,意味着运用原代码中提供的变量、方法、逻辑来尝试实现新的功能。当且仅当理解代码的人才能够敢加代码。改点代码也是,我们看的原代码也是人敲出来的,这些代码的排布可能不是最优化的。虽然这些代码已经实现了一些功能的实现,解决了需求,但不代表它是最优的。代码中可能存在着垃圾代码,垃圾变量,也可能逻辑不清,绕来绕去,又或者说是零零散散的,不够模块化。根据《编程的智慧》,我们的代码不应该只停留在实现功能上,我们要写出优雅的代码,流畅的代码,模块化的代码,可读的代码。若能够将看的代码优化且不影响原来的作用,这种就是真正地读懂代码。
- 积极主动敲代码做到没?教材实践上有什么经验教训?
自上个学期自知代码水平不高后,这学期自己便有一定的意识去主动敲代码。有时候一个知识点它可以有不同方面的拓展,这就需要自己积极主动地去设例子,用代码去尝试,因此这学期除了教材上的代码,为了学习知识,积极主动敲的代码也不少。个人感觉这样的学习方法进步很大,拓宽了自己在java中的视野,对某种方法或者是知识点的理解程度更深,记的程度也更深了。教材上的实践让我认识到了,教材中教的毕竟是有限。很多时候教材后的实践需要用到对应章节更深层次的用法,这时就需要我们去网上找该知识点的扩展用法或者是事例。同时,教材上的实践很多都是几个章节的知识点的联动,这时就需要我们对之前学的知识有很好的消化,会用联系的观点去看题目。
课堂项目实践或课后作业
- 算法复杂度
- 实践要求:用 Java语言实现下列算法并进行单元测试, 请给出算法的时间复杂度。
- 求一个整数二维数组Arr[N][N]的所有元素之和。
- 对于输入的任意 3 个整数, 将它们按从小到大的顺序输出。
- 对于输入的任意 n 个整数, 输出其中的最大和最小元素。
- 仿ArrayList
- 实践要求:使用Java代码来实现ArrayList中的几个功能:
- getCountSize():获取列表中存放元素的个数
- isEmpty():判断列表是否为空
- add(Object newEntry):往列表中添加元素
- remove(Object anEntry):移除列表中指定的元素
- clear():将列表清空
- getFrequencyOf(Object anEntry):获取数组中某元素的个数
- contains(Object anEntry):检验某元素是否包含在这列表中
- 实践要求:使用Java代码来实现ArrayList中的几个功能:
- 队列课下作业
- 实践要求:
- 用自己完成的队列(链队,循环数组队列)实现模拟票务柜台排队功能
- 用JDB或IDEA单步跟踪排队情况,画出队列变化图
- 实践要求:
- 使用队列实现杨辉三角
- 实践要求:
- 如题
- 实践要求:
- 对二叉树遍历操作的深入思考
- 实践要求:
- 已知某种遍历序列,试着确定唯一的一棵树
- 实践要求:
- 课堂实践对提高应用能力有帮助吗?
- 我认为非常有,当场的检验是最能考验一个人能力的有效方法。这样可以看出自己平时还有哪些还没完全熟悉,从而可以更好地提高自己的短缺方面。
- 课堂实践上对自己有什么经验教训?
- 平时能够做到的在现场检验不一定能够做到,总有一个方面自己还不是很熟悉,总有一个方面自己还有继续提升的空间。因此现场的检验要重视起来,通过课堂实践来更好地进行自我的提高和升值。
- 课堂实践上对老师有什么教学建议?
- 方法很好,请继续保持