闭卷重建完全二叉树的数组映射的ADT、表示不变量、操作与复杂度。
数据结构与抽象数据类型 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建堆序与优先队列契约的ADT、表示不变量、操作与复杂度。
闭卷重建上浮、下沉与插入删除的ADT、表示不变量、操作与复杂度。
闭卷重建线性建堆证明的ADT、表示不变量、操作与复杂度。
闭卷重建堆排序与原地边界的ADT、表示不变量、操作与复杂度。
闭卷重建Top-K、流式选择与双堆的ADT、表示不变量、操作与复杂度。
闭卷重建实验:通用二叉堆的ADT、表示不变量、操作与复杂度。
机制:最小堆只保证父键不大于子键,根是全局最小,但兄弟和不同子树无全序;实验:判断数组是否为堆并构造一个中序并不排序的反例;边界:把堆当BST会错误查找任意键;相同优先级稳定性也不是默认保证。
机制:0下标堆中parent=(i-1)//2,children=2i+1/2i+2;完全性让数组无洞;实验:手算十个位置父子索引并画成树;边界:存在子节点必须先检查索引<size,公式不能证明节点一定存在。
机制:从最后非叶节点逆序下沉,靠多数节点高度低使总成本O(n),不是n次O(logn)的松上界;实验:对同一数组比较逐个插入和bottom-up建堆交换数;边界:从根向下遍历建堆会在父节点调整后再次破坏已处理子树。
机制:插入放数组尾再沿父链上浮,删除根用尾元素填根再向较小子下沉;实验:逐交换记录push和pop后的数组;边界:下沉必须选两个孩子中更优者,任意交换一个违规孩子可能仍破坏另一边。
机制:保留大小k的小顶堆可跟踪最大k项,双堆可维护动态中位数;实验:让数据流逐项到来并输出Top-K和中位数;边界:k=0、重复值和两堆大小差/边界顺序必须定义。
机制:最大堆反复把根换到末尾并缩小堆区,得到升序但通常不稳定;实验:逐轮区分堆区和已排序后缀并输出数组;边界:下沉范围必须排除已排序后缀,相等键交换会破坏稳定性。
机制:实现heapify/push/pop/replaceTop及比较器,统计比较交换次数;实验:覆盖空堆、重复键、逆序输入和连续pop测试;边界:不能调用heapq冒充核心实现;每次公开操作后验证数组堆序。