
数据结构
Meskjei
爱那么短 而回忆那么长
展开
-
数据结构--霍夫曼树与霍夫曼编码
文章目录最优树的定义如何构造最优树(霍夫曼算法)霍夫曼编码前缀编码总结最优树的定义节点的路径长度定义为:从根节点到该节点的路径上分支的数目。树的路径长度定义为:树中每个节点的路径长度之和。树的带权路径长度定义为:树中所有叶子节点的带权路径长度之和。(叶子节点权值*节点路径长度)在所有含 n 个叶子结点、并带相同权值的m叉树中,必存在一棵其带权路径长度取最小值的树,称为“最优树”。如何构...原创 2019-07-08 20:44:37 · 2109 阅读 · 0 评论 -
数据结构--希尔排序
文章目录概念算法步骤代码实现概念希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分...原创 2019-07-22 09:09:06 · 239 阅读 · 0 评论 -
数据结构--折半插入排序
所谓折半插入排序,可以理解为折半查找与直接插入排序的结合。直接插入排序需要待排序数字与有序数组逐个比较。而折半查找则可以减少比较的次数,从而较快的得到待排序数字应处的位置。function binaryInsSort(arr){ if(!arr && !arr.length){return -1;} for(let i=1,len=arr.length; i<...原创 2019-07-21 22:33:10 · 473 阅读 · 0 评论 -
数据结构--直接插入排序
直接插入排序概念插入排序的基本思想是:在一个已排好序的记录子集的基础上,每一步将下一个待排序的记录有序地插入到已排好序的记录子集中,直到将所有待排记录全部插入为止。插入类排序的整个过程就如同打扑克的理牌过程类似,拿到一张牌然后在已排好序的序列中找到一个合适的位置将这张牌插入。function insSort(arr){ if(!arr && !arr.length...原创 2019-07-21 21:47:59 · 1016 阅读 · 0 评论 -
散列(Hash)表
文章目录概念定义构造散列函数的方法。直接定址法数字分析法平方取中法折叠法除留余数法随机数法处理冲突的方法开放定址法线性探测再散列平方探测再散列例子链地址法散列表的查找散列表的性能概念静态查找表和动态查找树表的共同特点是记录在表中的位置和它的关键字之间不存在一个确定的关系,查找的过程为给定值依次和关键字集合中各个关键字进行比较,查找的效率取决于和给定值进行比较的关键字个数。用这类方法表示的查找...原创 2019-07-15 11:39:17 · 740 阅读 · 0 评论 -
数据结构--动态查找树表
文章目录二叉排序树概念查找算法插入算法删除算法被删除的节点时叶子节点被删除的节点只有左子树或只有右子树被删除的结点既有左子树,也有右子树查找性能的分析平衡二叉树概念构造平衡二叉树的方法性能分析二叉排序树概念二叉排序树或者是一棵空树或者是具有如下特性的二叉树:若它的左子树不空,则左子树上所有结点的值均小于根结点的值;若它的右子树不空,则右子树上所有结点的值均大于根结点的值;它的左、右...原创 2019-07-15 10:00:23 · 711 阅读 · 0 评论 -
数据结构--二叉树遍历算法的应用
文章目录查询二叉树中的某个节点统计二叉树中叶子节点的个数参数形式全局变量形式返回值形式求二叉树的深度(后序遍历)复制二叉树(后续遍历)层次遍历二叉树总结查询二叉树中的某个节点在二叉树不空的前提下,和根结点的元素进行比较,若相等,则找到返回TRUE;否则在左子树中进行查找,若找到,则返回TRUE;否则继续在右子树中进行查找,若找到,则返回TRUE,否则返回FALSE;bool preO...原创 2019-06-30 12:28:04 · 1194 阅读 · 0 评论 -
数据结构--二叉树的遍历
文章目录遍历的概念搜索路径遍历算法(非递归)先序遍历中序遍历后序遍历先序遍历代码描述遍历算法(递归)中序遍历先序遍历由二叉树的先序和中序序列建树遍历的概念顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一次。“访问”的含义可以很广,如:输出结点的信息等。“遍历”是任何类型均有的操作,对线性结构而言,只有一条搜索路径(因为每个结点均只有一个后继),故不需要另加讨论...原创 2019-06-30 10:21:40 · 545 阅读 · 0 评论 -
数据结构--二叉树的存储结构
文章目录顺序存储表示链式存储表示二叉链表三叉链表顺序存储表示以存储的数据是整型为例。// 二叉树的最大节点数# define MAX_TREE_SIZE 100//0号单元存储根节点typedef int SqBiTree[MAX_TREE_SIZE];SqBiTree bt;一棵二叉树的逻辑结构如下:则其顺序存储结构如下:由于二叉树不一定都是完全二叉树,所以希望通过标号...原创 2019-06-30 08:24:45 · 1598 阅读 · 2 评论 -
数据结构--二叉树的概念与性质
文章目录概念二叉树的五种基本形态性质性质1性质2推广性质3推广性质4性质5特殊的二叉树满二叉树完全二叉树概念二叉树或为空树,或是有一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二叉树的五种基本形态image注:二叉树不等同于度不大于2的树,因为若两概念相同,则仅有左子树或仅有右子树的情况就是一种情况。性质性质1在二叉树的第iii层上至多有2i−12^{i-1}...原创 2019-06-29 17:10:29 · 901 阅读 · 0 评论 -
数据结构--静态查找表
文章目录顺序查找表----顺序查找法性能有序查找表----折半查找法静态查找表:仅作查询和检索操作的查找表。查找的方法取决于查找表的结构。 由于查找表中的数据元素之间不存在明显的组织规律,因此不便于查找。 为了提高查找的效率,需要在查找表中的元素之间人为地附加某种确定的关系,换句话说,用另外一种结构来表示查找表。顺序查找表----顺序查找法此处以存储结构为顺序表的顺序查找表为例。所谓顺序查...原创 2019-07-10 11:14:49 · 2269 阅读 · 0 评论 -
数据结构--循环队列
文章目录顺序存储结构循环队列代码实现注意顺序存储结构所谓顺序存储结构就是用一组地址连续的存储单元依次存放从队头到队尾的元素。声明两个指针rear、front分别用来指示队尾元素的下一位置和队头元素的位置。初始化时rear = front = 0,插入新的元素时尾指针加1,元素出队列时队头指针加1。不过这样做有个问题,不论是入队还是出队,队头或队尾指针都是加1,这样做有一个问题,就是元素...原创 2019-06-29 15:39:42 · 3674 阅读 · 0 评论 -
数据结构--冒泡排序
文章目录概念算法思想代码实现概念冒泡排序是一种交换排序。即两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。算法思想两两比较序列中数字,若两者中前者比后者大,则交换两者位置。那么这样做的结果就是每一次交换后,最大的都会冒泡到了最后。也就是说,第一次冒泡到最后的是第一大的数,第二次则是第二大,以此类推。代码实现function bubleSort(...原创 2019-07-22 12:05:51 · 296 阅读 · 0 评论