Loading

摘要: 1. 二叉树的问题分析 二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树: 二叉树需要加载到内存的,如果二叉树的结点少,没有什么问题,但是如果二叉树的结点很多(比如 1 亿), 就存在如下问题: 问题1:在构建二叉树时,需要多次进行I/O操作(海量数据存在数据库或文件中),结点海量,构建二叉 阅读全文
posted @ 2020-02-18 21:07 tree6x7 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 1. 引入 给你一个数列 {1,2,3,4,5,6},要求创建一颗二叉排序树(BST) 上述 BST 存在的问题分析 左子树全部为空,从形式上看,更像一个单链表 插入速度没有影响 查询速度明显降低,不能发挥 BST 的优势 // 因为每次还需要比较左子树,其查询速度比单链表还慢 [解决方案] 平衡二 阅读全文
posted @ 2020-02-18 21:04 tree6x7 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 1. 引入 给你一个数列 {7, 3, 10, 12, 5, 1, 9},要求能够高效的完成对数据的查询和添加。 1. 使用数组 数组未排序 优点:直接在数组尾部添加,速度快 缺点:查找速度慢 数组排序 优点:可以使用二分查找,查找速度快 缺点:为了保证数组有序,在添加新数据时,找到插入位置后,后面 阅读全文
posted @ 2020-02-18 21:02 tree6x7 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1. 基本介绍 赫夫曼编码(Huffman Coding) 是 Huffman 于 1952 年提出一种编码方法,称之为最佳编码,属于一种程序算法。 赫夫曼编码是 {赫夫曼树} 在电讯通信中的经典的应用之一,赫夫曼编码广泛地用于数据文件压缩,其压缩率通常在 20%~90% 之间。赫夫曼码是可变字长编 阅读全文
posted @ 2020-02-18 20:57 tree6x7 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1. 几个重要概念 1.1 路径和路径长度 路径:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路; 路径长度:通路中分支的数目;若规定根结点的层数为 1,则从根结点到第 L 层结点的路径长度为 L-1。 1.2 结点的权及带权路径长度 结点的权:将树中结点赋给一个有着某种含义的数值; 阅读全文
posted @ 2020-02-18 20:54 tree6x7 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 1. 引入 2. 基本介绍 n 个结点的二叉链表中含有 n+1 个空指针域 利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索") 一个结点的前一个结点,称为“前驱结点” 一个结点的后一个结点,称为“后继结点” 这种加上了线索的二叉链表称为线索链 阅读全文
posted @ 2020-02-18 20:53 tree6x7 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 1. 概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。但顺序存储二叉树通常只考虑的是完全二叉树。 用数组存储无疑是最节省内存的一种方式。因为数组的存储方式并不需要像链式存储法那样,要存储额外的左右子节点的指针。这也是为什么完全二叉树会单独拎出来的 阅读全文
posted @ 2020-02-18 20:51 tree6x7 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 1. 遍历方式 a. 先序遍历 步骤 // 先访问根结点 访问根结点 先序访问左子树 先序访问右子树 举例 b. 中序遍历 步骤 // 中间访问根结点 中序遍历左子树 访问根结点 中序遍历右子树 举例 c. 后序遍历 步骤 // 最后访问根结点 后序遍历左子树 后序遍历右子树 访问根结点 举例 2. 阅读全文
posted @ 2020-02-18 20:50 tree6x7 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1. 树 1.1 定义 树是 n(n>=0) 个结点的有限集,在任意一棵非空树中: 有且仅有 1 个特定的称为“根”的结点。 当 n>1 时,其余结点可分为 m 个互不相交的有限集 T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根的“子树”。 1.2 基本术语 1.3 树的分类 【一般 阅读全文
posted @ 2020-02-18 20:49 tree6x7 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1. 线性结构存储方式分析 1.1 数组存储方式的分析 优点:通过下标方式访问元素,速度快;对于有序数组,还可使用二分查找提高检索速度 缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 1.2 链表存储方式的分析 优点:在一定程度上对数组存储方式有优化 (比如:插入一个数值结 阅读全文
posted @ 2020-02-18 20:37 tree6x7 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 散列表(Hash table,也叫哈希表),是根据 关键码值(Key value) 而直接进行访问的数据结构。也就是说,它通过把关键码值 映射 到表中一个位置来访问记录(也就是先找是存放在哪条链表上),以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 2. 案例 有 阅读全文
posted @ 2020-02-18 20:36 tree6x7 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1. 顺序(线性) 查找 额,没啥要说的吧。优点的话,就是待查找集合数据可以无序 2. 二分/折半查找 2.1 思路分析 确定有序数组中间元素的索引 mid = (left + right) / 2 让待查找数 findVal 和 arr[mid] 比较 findVal > arr[mid],说明待 阅读全文
posted @ 2020-02-18 20:26 tree6x7 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 1. 优先队列 许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。很多情况下我们会收集一些元素,处理当前键值最大的元素,然后再收集更多的元素,在处理当前键值最大的元素,如此这般 ... 在这种情况下,一个合适的数据结果应该支持两种操作:删除最大元素和插入元素。 阅读全文
posted @ 2020-02-18 20:24 tree6x7 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1. 基本思想 归并排序(MERGE-SORT) 是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer) 策略。 "归并"思想 基于归并这个简单的操作,也就是说如果想要将一个数组排序,可以先(递归地) 将它分成两半分别排序,然后将结果归并起来,即将两个有序的数组 阅读全文
posted @ 2020-02-18 20:16 tree6x7 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 参考和引用了 白话经典算法系列之六——快速排序 的一些内容 1. 基本思想 概述 快速排序(Quicksort) 是一种分治的排序算法,它将一个数组分成两个子数组,将两部分独立地排序;排序的方式是当两个子数组都有序时整个数组也就自然有序了。 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的 阅读全文
posted @ 2020-02-18 19:34 tree6x7 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 1. 引入 插入排序存在的问题: 现在有这么一个数组,arr={2,3,4,5,6,1};现在需要插入的数 1 (最小),过程是: {2,3,4,5,6,6} → {2,3,4,5,5,6} → {2,3,4,4,5,6} → {2,3,3,4,5,6} → {2,2,3,4,5,6} → {1,2 阅读全文
posted @ 2020-02-18 19:33 tree6x7 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1. 基本思想 插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 把 n 个待排序的元素看成为一个〈有序表〉和一个〈无序表〉,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表 阅读全文
posted @ 2020-02-18 19:32 tree6x7 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 1. 举例说明 n 个数据,总共进行 n-1 次大的循环,得到一个按从小到大排列的有序序列: 第 1 次从 arr[0]~arr[n-1] 中选取最小值,与 arr[0] 交换 第 2 次从 arr[1]~arr[n-1] 中选取最小值,与 arr[1] 交换 第 3 次从 arr[2]~arr[n 阅读全文
posted @ 2020-02-18 19:31 tree6x7 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 1. 基本思想 从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒 每循环遍历一次,就能把这一轮见过的元素中 maxValue 放在末尾位置 // 和选择排序正好相反,选择是一轮过后,就确定一个 minVal 待排 阅读全文
posted @ 2020-02-18 19:30 tree6x7 阅读(95) 评论(0) 推荐(0) 编辑