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


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

    教材学习内容总结

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

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

    • 问题1:对优先级队列不太了解

    • 问题1解决方案:

    • 优先级队列的定义:优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。
    • 优先级队列的特点:
    • 优先级队列是0个或多个元素的集合,每个元素都有一个优先权或值。
    • 当给每个元素分配一个数字来标记其优先级时,可设较小的数字具有较高的优先级,这样更方便地在一个集合中访问优先级最高的元素,并对其进行查找和删除操作。
    • 当优先级相同时,按照先进先出的标准来实现操作。

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

    • 问题1:在PP12.1中如何用堆实现队列
    • 问题1解决方案:按照队列先进先出的顺序,要利用到removemin方法来返回一个最小值,再一个一个打出形成数列

    代码托管

    上周考试错题总结

    本周没有错题

    结对及互评

    • 本周结对学习情况

      • 20172311
      • 对课本上的诸多疑问点进行了讨论,同时对代码实现过程中遇到的一些问题也通过讨论得以解决。
    • 上周博客互评情况

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0/0 1/1 6/6
    第二周 612/612 1/2 18/24
    第三周 516/1128 1/3 16/40
    第四周 702/1830 2/5 16/56
    第五周 1926/3756 1/6 18/74
    第六周 948/4304 1/7 18/92
    第七周 771/5075 1/8 20/112
    第八周 1204/6279 1/9 20/132

    参考资料

  • 相关阅读:
    《Android 编程权威指南》学习笔记 : 第19章 数据绑定与MVVM
    《Android 编程权威指南》学习笔记 : 第13章 对话框
    《Android 编程权威指南》学习笔记 : 第17章 资源本地化
    《Android 编程权威指南》学习笔记 : 第15章 隐式 intent
    《Android 编程权威指南》学习笔记 : 第18章 Adroid 辅助功能
    《Android 编程权威指南》学习笔记 : 第14章 应用栏
    《Android 编程权威指南》学习笔记 : 第20章 音频播放与单元测试
    《Android 编程权威指南》学习笔记 : 第16章 使用 intent 拍照
    05月31日总结
    05月30日总结
  • 原文地址:https://www.cnblogs.com/20172307hyt/p/9940726.html
Copyright © 2020-2023  润新知