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

教材学习内容总结

  • 时间复杂度:增长函数与大O符号。增长函数表明问题大小(n)与希望优化的值之间的关系。该函数表示时间复杂度或空间复杂度。渐进复杂度称为算法的阶。记为O(n)

  • 时间复杂度越低,程序运行效率越高。时间复杂度的计算可通过寻找运行次数最多的程序,计算他的运行次数,取n的最高次方的极数,即为程序的时间复杂度

  • 栈可以理解为一类数据的集合,栈中的元素可以写入,也可以读出。元素存在先后次序。先入栈的先被读出。栈可用数组,链表两种形式实现。

  • 有push,pop,peek,isempty,size等常用操作

  • 链式结构是基于数组的集合实现的主要代替方案,链表是一种链式结构,自引用式构成了链表的基础,在链表中存储的对象通常泛称为结点node

  • 队列是一种线性集合,元素从一段加入从另一端删除(先进先出)。

  • 队尾(tail),队首(head),队列前端(front),队列末端(rear)。

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

  • 问题1:Queue接口两种方法add和offer在异常类处理上有何不同。
  • 问题1解决方案:两者都是往队列尾部插入元素,不同的时候,当超出队列界限的时候,add()方法是抛出异常让你处理,而offer()方法是直接返回false
  • 问题2:链表和数组的优缺点?
  • 问题2解决方案:数组比链表好在:能根据下标随机读取,链表要访问一个结点需要一个个摸过去;
    链表比数组好在:链表比数组节省空间,而且在面对多次循环,元素数量不确定时,链表能比数组更方便地开空间。

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

  • 问题1:在用数组实现栈时,但数组下标会随着插入,删除,排序而改变
  • 问题1解决方案:固定节点将数值放到每个节点盒子里,所以这样数组下标可以保持不变
  • 问题2:用泛型定义的数组在实例化时出现问题。
  • 问题2解决方案:泛型定义实例化的时候在T后加上[]

代码托管

上周考试错题总结

无考试

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分)

  2. 模板中的要素齐全(加1分)

  3. 教材学习中的问题和解决过程, 3个问题加3分

  4. 代码调试中的问题和解决过程, 2个问题加2分

  5. 本周有效代码超过300分行的(加2分)

  6. 感想,体会不假大空的加1分

  7. 排版精美的加一分

  8. 进度条中记录学习时间与改进情况的加1分

  9. 有动手写新代码的加1分

  10. 课后选择题有验证的加1分

  11. 错题学习深入的加1分

  12. 点评认真,能指出博客和代码中的问题的加1分

  13. 结对学习情况真实可信的加1分

点评模板:

  • 博客中值得学习的或问题:

    • 排版很好
  • 代码中值得学习的或问题:

    • 代码增长量多,说明结对的同学这周很努力的在学习Java,我也要努力学习Java了
    • 仓库有点混乱
  • 参考示例

点评过的同学博客和代码

其他(感悟、思考等,可选)

学习内容越来越多,任务量也是越来越大,然后好多知识都要自学,有点跟不上节奏了

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90
第五周 1526/2986 2/9 20/115
第六周 837/3823 2/11 20/135
第七周 1639/5462 2/13 20/155
  • 计划学习时间:20小时

  • 实际学习时间:20小时

参考资料