摘要:
二分查找 1. 算法介绍 二分查找只适用于从有序的数列中进行查找,将数列排序后再进行查找 二分查找算法的运行时间为 O(log2 n),即 100 个数,最多需要 7 次:(2 ^ 6 arr[mid],则递归向右查找 findVal right 时,说明数组已经递归完毕,但是还没有找到! if(l 阅读全文
posted @ 2020-04-24 22:05
LEI_Z
阅读(965)
评论(0)
推荐(0)
摘要:
数据结构 图 一、基本介绍 图是一种数据结构,其中结点可以具有零个或者多个相邻元素。两个结点的连接称为边,结点也可以称为顶点 1.1 图的常用概念 顶点 边 路径 无向图 有向图 带权图 1.2 图的表示方式 邻接矩阵(二维数组) "逻辑结构" 分为两部分:V和E集合,其中,V是顶点,E是边。因此, 阅读全文
posted @ 2020-04-24 19:22
LEI_Z
阅读(610)
评论(0)
推荐(0)
摘要:
多路查找树 虽然二叉树的效率很高,但是也存在一些问题!二叉树是需要加载进内存的,倘若结点少无所谓,若有一亿个结点,就会有海量数据,会对速度造成影响 1. 多叉树 在二叉树中,每个结点规定最多有两个子结点,若允许每个结点可以有更多的数据项和子结点,那么就是多叉树 多叉树通过重新组织结点,减少树的高度, 阅读全文
posted @ 2020-04-24 19:21
LEI_Z
阅读(213)
评论(0)
推荐(0)
摘要:
平衡二叉树(AVL树) 上述二叉排序树和单链表一样,查询速度很慢,完全发挥不出来二叉排序树的优势,速度甚至比单链表还满 由此引出解决方案:平衡二叉树(AVL) 1. 基本介绍 平衡二叉树也称平衡二叉搜索树,AVL树,其可以保证查询效率较高 其特点是:它是一颗空树或者它的左右两个子树的高度差的绝对值不 阅读全文
posted @ 2020-04-24 19:19
LEI_Z
阅读(272)
评论(0)
推荐(0)
摘要:
二叉排序树 1. 基本介绍 二叉排序树:BST,对于二叉排序树的任何一个非叶子结点,要求左子结点的值比当前结点的值小,右子结点的值比当前结点的值大 特别说明:若有相同的值,可以将该结点放在左子结点或右子结点 2. 二叉排序树的创建和遍历 阅读全文
posted @ 2020-04-24 19:18
LEI_Z
阅读(244)
评论(0)
推荐(0)
摘要:
赫夫曼编码 1. 基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),也称霍夫曼编码,是一种编码方式,属于一种算法 赫夫曼编码也是赫夫曼树在电讯通信中经典的应用 赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间 赫夫曼码是可变字长编码(VLC)的一种。Huff 阅读全文
posted @ 2020-04-24 19:17
LEI_Z
阅读(566)
评论(0)
推荐(0)
摘要:
树的实际应用 赫夫曼树 1. 基本介绍 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树, 若该树的带权路径长度(wpl)达到最小 ,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),也称霍夫曼树 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 2. 重要概念 路径 阅读全文
posted @ 2020-04-24 19:15
LEI_Z
阅读(182)
评论(0)
推荐(0)
摘要:
树的实际应用 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序属于选择排序,其最好、最坏、平均时间复杂度均为 O(nlogn) ,他也是 不稳定排序 1. 堆介绍及最大最小堆 堆是具有以下性质的完全二叉树 每个结点的值都大于或等于其左右孩子结点的值,称为大项堆 每个结点的值都小于等于其 阅读全文
posted @ 2020-04-24 19:14
LEI_Z
阅读(407)
评论(0)
推荐(0)
摘要:
线索化二叉树 叶子结点的左右指针无法完全利用上,我们若想要充分利用各个结点的左右指针,让各个结点可以指向自己的前后结点,可以引入 线索二叉树 1. 基本介绍 n个结点的二叉链表中含有 n + 1 个空指针域,利用二叉链表的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(附加的指针称为 阅读全文
posted @ 2020-04-24 19:10
LEI_Z
阅读(354)
评论(0)
推荐(0)
摘要:
二叉树 每个结点最多只有两个子结点的树称为二叉树 ,二叉树的子结点分为左结点和右结点 二叉树的所有叶子结点都在最后一层,且结点 = 2 ^ n 1,则称之为满二叉树(n)为层数 二叉树的所有叶子结点都在最后一层或者倒数第二层,且最后一层的叶子结点左连续,倒数第二层叶子结点右连续,则称之为完全二叉树 阅读全文
posted @ 2020-04-24 19:08
LEI_Z
阅读(221)
评论(0)
推荐(0)
摘要:
数据结构 树 引入 数组存储方式通过下标方式访问元素,速度快,插入元素时效率很低,链式存储插入和删除时效率很高,但检索时效率又变低,故引入树结构,能够提高数据存储、读取的效率 树的常用术语 结点 根结点 父结点 子结点 叶子结点 结点的权(结点的值) 路径(根结点开始的路线) 层 子树 树的高度(最 阅读全文
posted @ 2020-04-24 19:05
LEI_Z
阅读(160)
评论(0)
推荐(0)
摘要:
排序算法 基数排序(桶排序) 基本介绍 基数排序(radix sort)属于“分配式排序”,又称为“桶排序”,他是通过键值的各个位的值,要将排序的元素分配至某些“桶”中,达到排序的作用,基数排序属于稳定排序,效率很高。 基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零,然后从最低 阅读全文
posted @ 2020-04-24 19:03
LEI_Z
阅读(207)
评论(0)
推荐(0)
摘要:
排序算法 归并排序 算法介绍 归并排序(merge sort)利用 归并 的思想,采用经典的 分治 策略完成。 算法思想 代码实现 java package cn.imut.sort; import java.lang.reflect.Array; import java.util.Arrays; 阅读全文
posted @ 2020-04-24 19:02
LEI_Z
阅读(164)
评论(0)
推荐(0)
摘要:
排序算法 快速排序 基本介绍 快速排序(Quicksort)是对冒泡排序的改进。 排序思想 通过一趟排序将数据分割为两部分 其中一部分要比另一部分都要小 以此类推,可以递归进行 示意图 代码实现 测试速度(八百万个数据) java public static void main(String[] a 阅读全文
posted @ 2020-04-24 18:59
LEI_Z
阅读(157)
评论(0)
推荐(0)
摘要:
排序算法 希尔排序 问题引入 插入排序中存在的问题: 若数据为 2 3 4 5 6 1,则后移的次数明显增多,很影响效率 希尔排序基本介绍 希尔排序是 希尔(Donald Shell) 于1959年提出的一种排序算法。 希尔排序也是一种插入排序 ,他是简单插入排序改进之后的一个 更高效的版本 ,也称 阅读全文
posted @ 2020-04-24 18:58
LEI_Z
阅读(197)
评论(0)
推荐(0)
摘要:
排序算法 插入排序 基本介绍 插入排序属于内部排序,是对要排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的 算法思想 把n个待排序的元素看成一个 有序表和一个无序表 开始时,有序表只含有一个元素,无序表中有n 1个元素 排序过程中每次从无序表取出第一个元素,把它的排序码依次和有序表元素的 阅读全文
posted @ 2020-04-24 18:57
LEI_Z
阅读(136)
评论(0)
推荐(0)
摘要:
排序算法 选择排序 基本介绍 选择排序(select sorting)也属于内部排序,是从要排序的数据中,按指定的规则选出来某一元素,再按规定交换位置后达到排序的目的 排序思想 第一次从arr[0] ~ arr[n 1]中选取最小值,与arr[0] 交换 第二次从arr[1] ~ arr[n 1]中 阅读全文
posted @ 2020-04-24 18:18
LEI_Z
阅读(148)
评论(0)
推荐(0)
摘要:
排序算法 冒泡排序 基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序顺序从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水中的气泡一样逐渐向上冒 因为排序的过程中,各个元素不断接近自己的位置, 若一趟比较下来没 阅读全文
posted @ 2020-04-24 18:14
LEI_Z
阅读(164)
评论(0)
推荐(0)
摘要:
排序算法介绍 基本介绍 排序也称为排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。 排序的分类 内部排序 指将需要处理的所有数据都加载到内部存储器中进行排序 外部排序 数据量过大,无法全部加载到内存中,需要借助外部存储进行排序 常见的排序算法分类 常用的排序算 阅读全文
posted @ 2020-04-24 18:12
LEI_Z
阅读(215)
评论(0)
推荐(0)
摘要:
数据结构 算法复杂度 时间复杂度 事件频度 一个算法花费的时间与算法种语句的执行次数成正比,哪个算法种语句执行次数多,它花费时间就多。 一个算法中的语句执行次数称为语句频度或时间频度。记为T(n) eg:计算1 100的和 方法一:for循环 T(n) = n + 1 方法二:直接计算 T(n) = 阅读全文
posted @ 2020-04-24 18:10
LEI_Z
阅读(209)
评论(0)
推荐(0)