20162310 《程序设计与数据结构》课程总结
每周作业链接汇总
第一周作业:
- 本章从效率的角度来介绍了我们在软件开发中所要注意的地方
- 引入了增大函数和大O符号的概念
- 算法分析师计算机科学的基础课题
处理器速度的提升和内存不能弥补算法效率的差异
第三周作业:
- 查找实在一组项内找到指定目标或是确定目标不存在的过程。
- 查找使得比较的次数最少。
- Comparable接口允许多态实现算法,而不是只应用于特定的类。
- 二分查找利用了查找池有序的这个特性。
- 二分查找的每次比较都排除了一半的可行候选数据。
- 排序是按某种标准将一列数据项确定的次序重排的过程。
- 二分查找有对数阶的复杂度,对于大的查找池来说,这非常有效率。
- 选择排序、插入排序及冒泡排序的平均运行时间复杂度是O(n^2)。
- 快速排序的关键是选择一个好的划分元素。
归并排序的最差运行时间复杂度是O(n log n)。
第五周作业:
- 集合分为线性集合(集合中的元素排成一行)和非线性集合(按不同于一行的方式来组织元素,例如按层次或是按网络的方式)。
- 集合中元素之间的组织方式通常由两个因素决定,一、它们加入集合的次序。二、元素之间的固有关系。
- 抽象数据类型(ADT)忽略许多的细节为的是方便控制复杂的系统。
- 栈集合以LIFO的方式处理元素
- 泛型是本章的重点,有使用栈来实现计算后缀表达式
使用数组或链表来实现栈是本章的练习重点
第六周作业:
- 本章讨论队列的处理
- 队列ADT的学习
- 与栈进行比较性学习
- 队列的目标是保持原来的顺序
- 了解队列在Caesar密码中的运用
- 模拟票务柜台
- 学习通过链表实现队列
使用循环数组实现队列
第七周作业:
- 非线性结构树的学习
- 树是一对多或多对多的形式
- 一个树只有一个根节点(root),父节点和孩节点的概念是相对的,没有孩节点的节点称为叶节点
- 树的实现也有两种形式,数组和链表。
树的常见的几种分类:二叉树,平衡二叉树,B 树,B+ 树,哈夫曼树,堆,红黑树
第九周作业:
- 堆的学习及其方法的应用
堆排序利用堆的基本特征对一组元素进行排序
第十周作业:
- 无向图,特别的,如果无向图中连接顶点的边数达到最大,则图为完全图
- 路径是图中连接两个顶点的边的序列
- 第一个顶点和最后一个顶点相同且边不重复的路径称为环
- 有向图
- 在有向图中,边是顶点的有序对
- 有向图中的路径是连接图中两个顶点的有向边的序列
- 带权图的定义是图的每条边上都有对应的权值的图
图算法
第十一周作业:
- 图的遍历
图中的树问题
自认为写得最好一篇博客是?为什么?
作业中阅读量最高的一篇博客是?谈谈经验
实验报告链接汇总
团队项目报告链接汇总
加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
会修改才是真正读懂代码
积极主动敲代码做到没?教材实践上有什么经验教训?
还是不够,融会贯通,应尝试用多种方法实现一个目标,以发现哪一条路好
课堂实践对提高应用能力有帮助吗?
有的,提高了我们的动手能力。
课堂实践上自己有什么经验教训?
节约时间,在短时间内高度集中注意力才能把项目做出来
课堂实践上对老师有什么教学建议?
可以有实践前的模拟训练并进行讲解,减少实践项目的数量,将富余的时间放在模拟训练上
课程收获与不足
自己的收获(投入,效率,效果等)
本学期我对于Java的投入一周10h左右,效率上面一直在提升,效果上来说还是可疑的
自己需要改进的地方
硬知识仍需提升,对于算法和代码需要自己的深入的理解
结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
本学期和结对伙伴的交流不频繁,但是有经常一起探讨树上的问题
问卷调查
你平均每周投入到本课程有效学习时间有多少?
10小时左右
每周的学习效率有提高吗?你是怎么衡量的?
有的,衡量标准就是时间利用率
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
有的,里面保存着许多资源,PPT和视频资料对我有很大帮助,做得很好,无意见
你觉得这门课老师应该继续做哪一件事情?
无
你觉得这门课老师应该停止做哪一件事情?
无
你觉得这门课老师应该开始做什么新的事情?
无
你如何评价出门门票和做笔记的要求?
可以