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小时

  • 改进情况:

有空多看看现代软件工程 课件 软件工程师能力自我评价表)

参考资料

posted @ 2017-09-24 21:03  20162306陈是奇  阅读(182)  评论(2编辑  收藏  举报