03 2021 档案
摘要:平衡二叉树(AVL 树) 1 看一个案例(说明二叉排序树可能的问题) 给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在. 左边 BST 存在的问题分析: 1) 左子树全部为空,从形式上看,更像一个单链表. 2) 插入速度没有影响 3) 查询速度明显降低(
阅读全文
摘要:二叉排序树 1 先看一个需求 给你一个数列 (7, 3, 10, 12, 5, 1, 9),要求能够高效的完成对数据的查询和添加 2 解决方案分析 使用数组 数组未排序, 优点:直接在数组尾添加,速度快。 缺点:查找速度慢. 数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保证数组有序,
阅读全文
摘要:赫夫曼树 1 基本介绍 1) 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为 最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。 2) 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 2 赫夫曼树
阅读全文
摘要:堆排序 1 堆排序基本介绍 1) 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也是不稳定排序。 2) 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有 要求结点的
阅读全文
摘要:1.计算机的常识 (1)总所周知,计算机最底层存储的二进制数值是以补码形式存在的,这是了实现两个数的减法而设计的。 (2)举个小例子去理解补码,两个四位二进制之间的加减运算 0010(2) + 0001(1) = 0011(3) 0010(2) - 0001(1) = 0001(1)(现实中的运算)
阅读全文
摘要:1 顺序存储二叉树 1.1 顺序存储二叉树的概念 基本说明 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组, 看下面的示意图。 要求: 1) 右图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6] 2
阅读全文
摘要:二叉树 1.1 为什么需要树这种数据结构 1) 数组存储方式的分析 优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 画出操作示意图: 2) 链式存储方式的分析 优点:在一定程度上对
阅读全文
摘要:1 学校 OA 系统的采购审批项目:需求是 采购员采购教学器材 1) 如果金额 小于等于 5000, 由教学主任审批 (0<=x<=5000) 2) 如果金额 小于等于 10000, 由院长审批 (5000<x<=10000) 3) 如果金额 小于等于 30000, 由副校长审批 (10000<x<
阅读全文
摘要:1 哈希表(散列)-Google 上机题 1) 看一个实际需求,google 公司的一个上机题: 2) 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该员工的 id 时,要求查 找到该员工的 所有信息. 3) 要求: 不使用数据库,尽量节省内存,速度越
阅读全文
摘要:1 查找算法介绍 在 java 中,我们常用的查找有四种: 1) 顺序(线性)查找 2) 二分查找/折半查找 3) 插值查找 4) 斐波那契查找 2 线性查找算法 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提 示找
阅读全文