20162306 2017-2018-1 《程序设计与数据结构》第3周学习总结
20162306 2017-2018-1 《程序设计与数据结构》第3周学习总结
教材学习内容总结
-
1、 查找:查找是在一组项内找到指定目标或是确定目标不存在的过程。
-
2、 两种常用的查找方法:线性查找、二分查找。
线性查找:从查找池的一端挨个查找,时间复杂度为O(n);
二分查找:将查找池中的数据一分为二,将查找项所在组再次一分为二,每次都排除了一半的可行候选数据,时间复杂度O(logn);
对比:通常情况下,二分查找更高效,但局限性在于二分查找要求表是有序的。 -
3、排序:按某种标准将一列数据项按确定的次序重排的过程。
-
4、五种排序算法:
(1)选择排序:扫描整个表找到最小值,将这个值与表中第一个位置的值交换。继续扫描余下的表,将最小值与第二个位置的值交换,以此类推。
算法效率:O(n2)
(2)插入排序:将一个具体的值插入到表中已有序的子序列中,重复该过程,直到完成排序。
算法效率:O(n2)
(3)冒泡排序:重复的比较表中的相邻元素,如果是逆序就交换。
算法效率:O(n2)
(4)快速排序:选定表中的一个元素作为枢轴,对表进行划分,小于枢轴的全部放在左侧,大于的全放在右侧。然后分别在两组中选取枢轴重复操作。
算法效率:O(nlogn)
(5)归并排序:递归的将表分为两部分,直到每个子表中只含有一个元素,然后将这些子表归并。
算法效率:O(nlogn)
教材学习中的问题和解决过程
-
问题1:对于ppt中选择排序的堆排序不是很理解,如何在输出堆顶元素之后,调整剩余元素成为一个新的堆?
-
问题1解决方案:通过上网查阅博客
先考虑第二个问题,一般在输出堆顶元素之后,视为将这个元素排除,然后用表中最后一个元素填补它的位置,自上向下进行调整:首先将堆顶元素和它的左右子树的根结点进行比较,把最小的元素交换到堆顶;然后顺着被破坏的路径一路调整下去,直至叶子结点,就得到新的堆。
代码调试中的问题和解决过程
-
对于程序13.1中的comparable接口用法不是很理解。
-
问题1解决方案:通过上网查阅博客
-
结合博客中的实例,对comparable接口有了一定的了解。
代码托管
上周考试错题总结
- 第一次做完还是受英语的困扰,得分很不好,第二次做之前将里面的一些高频词汇查出来了,做的时候省了很多功夫,效果也不错。但是至今还不知道错了哪道题。可能是个小bug吧。。
结对及互评
点评模板:
- 博客中值得学习的或问题:
- 对于教材代码研究的很透彻
本周结对学习情况
- [20162305](http://www.cnblogs.com/lyxwatm/p/7501728.html)
- 结对学习内容
- 梳理教材内容
- 理解ppt中的内容
其他(感悟、思考等,可选)
- 感觉现阶段所学课本内容都能够理解,但是一涉及到写代码,之前的短板就暴露出来,即使临时补漏将本节的代码看懂了,对于一些脱离当前学习内容的程序设计依旧束手无策,只能一点一点的补漏,对于一些综合性强一点的程序设计,我只能尽量跟着做,希望老师理解。。。。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/1 | 10/10 | |
第二周 | 303/303 | 1/2 | 10/20 |
-
计划学习时间:12小时
-
实际学习时间:10小时
-
改进情况:
有空多看看现代软件工程 课件 软件工程师能力自我评价表)