zoukankan      html  css  js  c++  java
  • 20162305 2017-2018-1 《程序设计与数据结构》第9周学习总结

    20162305 2017-2018-1 《程序设计与数据结构》第9周学习总结

    教材学习内容总结

    • 堆是一棵完全二叉树,其中的每个元素大于等于其所有子结点的值。
    • 添加元素入堆:首先将这个元素添加为叶结点,然后将其向上移动到合适的位置。
    • 删除元素:利用最后的叶结点来取代根,然后将其向下移动到合适的位置。
    • 优先队列不是FIFO队列,它根据优先级排列元素,而不是根据它们进入队列的次序来排列。

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

    • 问题1:教材中的代码在调试的过程中遇到了问题,其中的addElement和removeMin方法有问题。而且继承的LinkedMaxHeap中也有问题。

    • 问题1解决方案:

    • addElement继承的是父类中的方法,在LinkedMaxHeap中,存在有add方法而没有addElement方法,将其改为add方法即可。

    • 而removeMin方法,根据removeNext方法的注释

    
    Removes the next highest priority element from this queue and  returns a reference to it. 
    
    

    我们可知它应该是需要得到一个最大的元素,所以这里应该使用removeMax方法,而这个方法也存在于父类中,这个问题得到解决。

    • 修改完这两个方法后,上面的问题仍然存在。我在张之睿同学的博客中知道了问题出在了哪里。原来PriorityQueueNode类实现了Comparable接口,用到了泛型,把比较的类型设为PriorityQueueNode类型时,漏了一个,加上后问题就得到了解决。

    • 修改后:

    代码托管

    (statistics.sh脚本的运行结果截图)

    上周考试错题总结

    • 1、
    
    A full binary tree of height n has _________________ leaves. 
    
    A. 2n
    B. 3n
    C. 2n
    D. 2(n+1)
    E. 3(n+1)
    
    
    • 正确答案:A

    • 解析:一个完整的二叉树正好有2n个叶子,因为每一片叶子都在同一高度,每个内部节点都有2个孩子。

    • 2、

    
    
    In a full tree, all leaves are at the same level. 
    A . true
    B . false
    
    
    • 正确答案:A

    • 解析:完全树的定义是一棵树,所有的叶子都在同一水平,每个非叶节点有N个孩子。

    • 3、

    
    In a postorder traversal, the root is the last element visited in the tree. 
    
    A.true
    B.false
    
    
    • 正确答案:B
    • 解析:一个后序遍历访问右子树,然后左子树,然后根。因此根始终是访问的最后一个元素。

    结对及互评

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

    • 本周学习了堆、优先队列、哈夫曼树这些内容,个人感觉堆这部分内容在有了树的基础上相对容易些,而哈夫曼树我觉得还有很多要去学习,这周是在老师给出了代码的基础上补充方法,对老师给的代码都要好好分析理解。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 20/20
    第二周 100/100 1/2 15/35
    第三周 454/554 1/3 15/50
    第四五周 772/1326 2/5 20/70
    第七周 745/2071 2/7 20/90
    第八周 1125/3196 2/9 20/110
    第九周 810/4006 1/10 20/130 哈夫曼树、堆

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

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

    参考资料

  • 相关阅读:
    2014年工作总结
    正则表达式语法规则
    按照事务类型分析 DB2 事物的性能
    DB2定位锁等待
    深入研究线程池
    WebSphere应用服务器内存泄漏探测与诊断工具选择最佳实践
    一次WebSphere性能问题诊断过程
    WebSphere Application Server诊断和调优
    将 Spring 和 Hibernate 与 WebSphere Application Server 一起使用
    Websphere Application Server 环境配置与应用部署最佳实践
  • 原文地址:https://www.cnblogs.com/lyxwatm/p/7786932.html
Copyright © 2011-2022 走看看