第八周作业

20182313 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结

教材学习内容总结

  • 查找
  1. 线性查找法:从头开始依次比较每一个值,直到找到目标元素,或者得出不存在该目标值的结论,这种方式称为线性查找(linear search)
    image
  2. 二分查找(折半查找):当查找池中的项目组是已排序的,那么利用二分查找将会更有效率。
  3. 二分查找的思路: 二分查找从排序列表的中间开始查找,如果中间元素不是目标元素,根据两个元素的大小关系,再判断从列表的前一半或是后一般进行查找。每次的查找都是从当前一串数字的中间元素开始的。直到最后找到该元素或是没有找到抛出一个信息。
  4. 二分查找的每次比较都会删除一半的可行候选项,当查找池中有偶数个待查找值时,选择的是两个中间值的第一个。
  5. 二分查找的复杂度是对数级的,这使得它对于大型查找池非常有效率。线性查找具有线性时间复杂度O(n),二分查找具有时间复杂度O(log2n)。
    image
  • 排序
  1. 选择排序法:反复寻找当前列表的最小值,然后将其放在列表的前端。
    image
  2. 插入排序法:将数字插入前端已排序的列表的合适位置直至排序完成。
    image
  3. 冒泡排序法:反复比较相邻元素的大小关系进行移位操作直至排序完成
    image
  4. 快速排序法:选择一个列表元素进行分区元素,然后对两个分区进行递归排序直至排序完成(一个分区只含有一个元素)。
    排序时两个分区同时进行查找,一旦两边都找到一个元素,将两者进行互换
    image

教材学习中的问题和解决过程

  • 问题一:对静态变量里的一个实例变量存在一些疑惑
  • 问题一解决过程:实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部,但在类的其他成员方法之外声明的。类的每个对象维护它自己的一份实例变量的副本。
  • 问题二:排序法之间时间和空间复杂度的差异,上课时只是记住了这个概念的存在,不理解具体含义
  • 问题二解决过程:image

代码调试过程中的问题和解决过程

  • 问题一:在运行listlinked时报错,无法进行正常操作
  • 问题一解决过程:经过检查之后发现是因为addtorear那个位置是空的,所以无法插入。原因出在addtofront方法里,没有考虑没有插入元素时列表是空的,除了定义head=node之外,还需要定义rear=node

代码托管

上周考试课题总结

上周无考试

结对及互评

  • 基于评分标准,我给本博客打分:15分 得分情况如下:
    1.正确使用Markdown语法(加1分)
    2.模板中的要素齐全(加1分)
    3.教材学习中的问题和解决过程(加2分)
    4.代码调试中的问题和解决过程(加3分)
    5.感想,体会不假大空(加1分)
    6.排版精美(加1分)
    7.进度条中记录学习时间与改进情况(加1分)
    8.有动手写新代码(加1分)
    9.错题学习深入(加1分)
    10.点评认真,能指出博客和代码中的问题(加1分)
    11.结对学习情况真实可信(加1分)
    12.本周有效代码超过300分行(加2分)

点评过的同学博客和代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第一周 171/171 2/2 20/20
第二三周 415/586 3/5 42/62
第四周 587/1173 2/7 22/84
第五周 1706/2879 2/9 19/103
第六周 1706/2879 2/9 19/103
第七周 3969/6848 2/11 21/124
第八周 1217/8065 2/13 24/148

参考资料

posted on 2019-11-04 23:05  20182313-刘尧  阅读(103)  评论(0编辑  收藏  举报