恢复内容开始 算法期末考试复习题 XD专用 program 2 1、归并排序在最差最好平均情况下的时间复杂度分别是多少? 答案:nlgn nlgn 2、(判断) 归并排序的空间复杂度是O(1)? (判断) 答案:false 应该是 O(n) 3、优先队列提取最大元素的算法时间复杂度?(用O表示) 答 ...
分类:
编程语言 时间:
2021-06-29 15:31:00
阅读次数:
0
顺序存储二叉树详解 说明 顺序存储二叉树,即将一颗完全二叉树按照从上到下,从左到右的顺序存储到一个数组中,因为数组是顺序存储的结构,因此称为顺序存储二叉树 给二叉树中各节点用 n 编号,从零开始,一直到最后 一个节点,对应于数组位置 假设当前节点的编号为 n ,那么当前节点的左子节点编号为 2 * ...
分类:
其他好文 时间:
2021-06-06 19:48:20
阅读次数:
0
前言——什么是完全二叉树 定义: 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。 性质: 1、具有n个结点的完全二叉树的深度(注:[ ]表示向下取整) 2、 ...
分类:
其他好文 时间:
2021-06-05 18:21:49
阅读次数:
0
What is a heap? 首先介绍优先队列: Heap(堆)是对优先队列的一种实现 每个元素都有对应的key值,且对于大顶堆(Max Heap)而言,其每个元素的key值都 ≥ 子元素的key值 堆可以可视化为一棵完全二叉树: 堆对应的树具有如下性质:(这里层数从0开始) 别忘了之前讲过的完全 ...
分类:
其他好文 时间:
2021-05-24 12:49:42
阅读次数:
0
解决 TOP k 问题通常可采用 堆排序 和 快速排序的思想 1. 大根堆(前 K 小) / 小根堆(前 K 大): 时间复杂度O(NlogK) c++ STL 中提供了 priority_queue 实现堆的基本功能,比如 priority_queue <int> pq; 堆 pq 的元素都是 i ...
分类:
编程语言 时间:
2021-05-24 05:41:19
阅读次数:
0
树 树的特点: 1.每个结点有零个或多个子结点; 2.每一个非根结点有且只有一个父结点; 3.没有父结点的结点称为根结点; 树的种类: 1.二叉树 树的任意节点至多包含两棵子树; 二叉树包含:完全二叉树,满二叉树,线索二叉树,平衡二叉树,二叉排序树,哈夫曼树; (1)完全二叉树: 对于一颗二叉树,最 ...
分类:
其他好文 时间:
2021-05-03 12:08:56
阅读次数:
0
十大经典排序算法 排序算法可以分为内部排序和外部排序,内部排序时数据记录在内存中进行排序,而外部排序时因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等 ...
分类:
编程语言 时间:
2021-04-27 15:03:51
阅读次数:
0
根据完全二叉树的性质(编号为$u$的节点的左儿子编号为$u2$,右儿子编号为$u2+1$),并利用后序遍历进行递归建树。 $level[i]$存储编号为$i$的节点的值。 const int N=35; int post[N]; int level[N]; int n; int k; void df ...
分类:
其他好文 时间:
2021-04-21 12:54:57
阅读次数:
0
堆排序 public class HeapSort { public static void main(String[] args) { int[] arr = {1, 3, 519, 2, 10, 8, 0, 998}; heapSort(arr); System.out.println(Arra ...
分类:
编程语言 时间:
2021-04-21 12:26:45
阅读次数:
0
#堆排序 通过将无序表转化为堆,可以直接找到表中最大值或者最小值,然后将其提取出来,令剩余的记录再重建一个堆, 取出次大值或者次小值,如此反复执行就可以得到一个有序序列,此过程为堆排序。 思路: 1.创建一个堆 H[0……n-1]; 2.把堆首(最大值)和堆尾互换; 3.把堆的尺寸缩小 1,并调用 ...
分类:
编程语言 时间:
2021-04-20 14:08:43
阅读次数:
0