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

    20172315 2018-2019-1 《程序设计与数据结构》第八周学习总结

    教材学习内容总结

    • 堆是一棵完全二叉树,其中的每一结点都小于或等于它的两个孩子。
    • 一个堆也可以是最大堆(maxheap),其中的结点大于或等于它的左右孩子。
    • 最小堆将其最小元素存储在该二又树的根处,且其根的两个孩子同样也是最小堆。
    • addElement方法将给定的Comparable元素添加到堆中的恰当位置处,且维持该堆的完全性属性和有序属性。
    • 因为一个堆就是一棵完全树,所以对于插入的新结点而言,只存在一个正确的位置,且它要么是h层左边的下一个空位置,要么是h+1层左边的第1个位置(如果h层是满的话)。
    • 通常,在堆实现中,我们会对树中的最末一个结点,或更为准确是,最末一片叶子进行跟踪记录。
    • 要维持该树的完全性,那么只有一个能替换根的合法元素,且它是存储在树中最末一片叶子上的元素。
    • 虽然最小堆根本就不是一个队列,但是它却提供了一个高效的优先级队列实现。
    • 因为我们要求在插入元素后能够向上遍历该树,所以堆中结点必须存储指向其双亲的指针。
    • 在二又树的数组实现中,树的根位于位置0处,对于每一结点n,n的左孩子将位于数组的2n+l位置处,n的右孩子将位于数组的2(n+l)位置处。
    • 链表实现和数组实现的addElement操作的时间复杂度同为O(logn)。
    • 链表实现和数组实现的removeMin操作的复杂度同为0(logn)。
    • heapSort方法的两部分构成:添加列表的每个元素,然后一次删除一个元素。
    • 堆排序的复杂度为O(nlogn)。

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

    • 问题1:为什么要维持该树的完全性,那么只有一个能替换根的合法元素,且它是存储在树中最末一片叶子上的元素
    • 问题1解决方案:由于堆是队列结构,只能从堆中删除堆顶元素。移除堆顶元素之后,用堆的最后一个节点填补取走的堆顶元素,并将堆的实际元素个数减1。但用最后一个元素取代堆顶元素之后有可能破坏堆,因此需要将对自顶向下调整,使其满足最大或最小堆。

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

    • 问题1:对于pp12.1说的堆中的比较操作必须依照进入该队列的顺序来进行是什么意思
    • 问题1解决方案:优先级队列把优先级改为一样即可解决

    代码托管

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

    上周考试错题总结

    • 错题1及原因,理解情况
      Insertion sort is an algorithm that sorts a list of values by repetitively putting a particular value into its final, sorted, position.

    A . true
    B . false
    正确答案: B
    你的答案: A
    insertion sort:插入排序一种排序算法,通过反复地把某个元素插入到之前已排序的子列表中,实现元素的排序。

    结对及互评

    点评模板:

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

      • 对于教材内容解析到位
      • 对于问题探讨不够
    • 代码中值得学习的或问题:

      • 代码简洁,一目了然
      • 代码注释过少

    点评过的同学博客和代码

    • 本周结对学习情况

    • 上周博客互评情况

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 0/0 0/0
    第二周 800/800 2/2 18/18
    第三周 600/1400 3/5 22/40
    第四周 700/1300 3/8 22/62
    第五周 400/1700 3/11 22/84
    第六周 200/1900 2/13 20/94
    第七周 400/2300 2/15 20/114
    第八周 600/2900 2/17 20/134

    参考资料

  • 相关阅读:
    jar包和war包的介绍和区别
    Oracle中rownum的基本用法
    深入理解JVM—JVM内存模型
    Oracle数据库中序列(SEQUENCE)的用法详解
    jvm主内存与工作内存
    jvm虚拟机
    java 冒泡排序
    java二分查找
    java中split()特殊符号"." "|" "*" "" "]"
    java map的实现原理
  • 原文地址:https://www.cnblogs.com/huzhitao/p/9938962.html
Copyright © 2011-2022 走看看