数据结构与算法
文章平均质量分 92
数据结构与算法
MuziBlogs
读源码,写注释,理解原理,整理笔记。
展开
-
冒泡、插入、选择、希尔、归并
排序算法概览:排序算法之起泡排序 起泡排序是最简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误(大于或小于)就把它们交换过来。这样数组中最大或最小的元素会一步一步的浮到数组的最后。直到重复执行 n-1次起泡循环,数组变成一个有序数组。图解:描述:第一步到第三步index总是小于index+1 所以不选择置换,当第四步 97 > 45 置换元素,置换...原创 2018-03-18 20:27:44 · 294 阅读 · 0 评论 -
堆排序、快速排序
排序算法之堆排序 堆排序是基于完全二叉树的排序算法,即二叉树的除最后一层外每一层都达到容纳结点的最大值。最后一层从左至右依次排列。堆排序引入了另一种算法设计技巧,使用一种我们称为“堆”的数据结构来进行信息管理,不仅用在堆排序中,而且它也可以构造一种有效的优先队列。 堆是一个数组,它可以被看成一个类似于完全二叉树的数据结构。即如果我们认为数组下标为 “i” 的位置的元素为根节点,则它...原创 2018-03-19 14:26:05 · 1198 阅读 · 0 评论 -
二分查找及变种二分查找
二分查找 二分查找也称折半查找(Binary Search),它的查找效率很好。二分查找有一个要求是必须采用顺序存储结构,而且表种的元素是有序的。只有满足这个条件我们才能使用二分查找。 查找条件: 查找区域的左边界,小于等于查找区域的右边界 查找过程: 1. 循环条件 == 查找条件 2.计算序列中间下标位置 3.如...原创 2018-03-23 21:20:08 · 390 阅读 · 0 评论 -
基数排序、计数排序、桶排序
排序算法之空间换取时间 空间换取时间的算法在当下用来解决问题是很常见的,因为现在的硬件很发达,内存,CPU配置都非常高,遇到难解的问题用空间换取时间是值得的。那么在排序算法种,使用空间换取时间的算法有那些? 1.计数排序: 计数排序是一种牺牲了大量空间的排序算法,计数排序和序列中数据的值域有关系,值域越大,我们所开辟的空间就越大,而且计数排序局限于 0 - 无穷大 的整数...原创 2018-03-25 14:52:10 · 614 阅读 · 0 评论 -
中英文字典树
英文字典树 英文字典树的结构图是这样的。按照树型结构存储字符串,每个结点存一个字符,自顶向下做标记的就是词的词尾,比如,app,apple,application,abstract,absorb,block,black,blake... 等等 介绍一下英文字典树的结点数据结构: 1.词频 int型变量记录词频 2.结点型数组,长度26下标对应0 - 25(也...原创 2018-03-27 15:54:38 · 1224 阅读 · 0 评论 -
平衡二叉查找树的删除及删除调整
AVL树的删除 avl树的删除,我们需要从某一个角度或者视角去想问题,比如我们根据删除的结点的继承关系来看: 1.删除的结点 左右子树都为空 (1)可能是根节点,那么我们直接删掉他 (2)可能是叶子结点,在删除时我们认为它被删除,然后以它为基点回溯调整树,最后删掉它。 2.删除的结点 左子树为空 , 右子树不为空...原创 2018-03-14 11:34:39 · 3985 阅读 · 2 评论 -
平衡二叉查找树的插入及插入调整
什么时AVL树?在数据结构中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度差的绝对值不能超过一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次旋转来使得AVL树保持平衡。AVL树的本质是一棵二叉搜索树,它的特性是:1.任意一个根节点的左孩子小于根节点,右孩子大于根节点。2.每个结点的左右子树的...原创 2018-03-14 08:32:40 · 2214 阅读 · 1 评论