数据结构和算法
文章平均质量分 89
奋斗的bigHead
做一个有思想的人,实事求是,笃学诚行
展开
-
红黑树
转自:https://my.oschina.net/hosee/blog/618828一、红黑树的介绍先来看下算法导论对R-B Tree的介绍:红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树,作为一棵二叉查找树,...原创 2018-08-27 13:51:15 · 92 阅读 · 0 评论 -
八种经典排序算法和java实现
八种经典排序算法和java实现原创 2018-11-29 16:55:30 · 372 阅读 · 0 评论 -
数据结构-堆和堆的Java实现
定义堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:1.堆中某个节点的值总是不大于或不小于其父节点的值;2.堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。堆的定义:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆...原创 2018-11-13 19:24:32 · 33473 阅读 · 4 评论 -
位运算面试题常用技巧
左移和右移规则对左移而言,移动正数和负数规则是相同的;对于右移而言,则有些差别,正数补0,负数补1。举例说明:对于一个16位的整数:0000 0000 0000 0101,左移一位是0000 0000 0000 1010,右移一位是0000 0000 0000 0010对于一个16位的负数:1000 0000 0000 0101,左移一位是0000 0000 0000 1010,右移一位是...原创 2018-12-13 15:12:34 · 261 阅读 · 0 评论 -
原码,反码,补码
数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念。概念对于一个数, 计算机要使用一定的编码方式进行存储。 原码, 反码, 补码是计算机存储一个具体数字的编码方式。一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。比如,十进制中的数 +2 ,计算机字长为8...原创 2018-12-04 16:09:43 · 139 阅读 · 0 评论 -
数学归纳法和递归函数
1.什么是数学归纳法?数学归纳法用于证明在自然数上的一些断言是否成立。怎么证明断言对所有自然数成立?第一步:证明N=1是成立的第二步:证明N>1时,如果对于N-1成立,那么对于N成立(第二步不是直接证明,而是先假设N-1成立,再利用这个结论证明N是成立的)例子:用数学归纳法证明 1+2+3+…+n = n(n+1)/2第一步:1 = 1*2/2第二步:①假设对于n-1的...原创 2018-11-28 18:27:08 · 2192 阅读 · 0 评论 -
AVL树简单了解
1.AVL树定义在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O(logn)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis,他们在...原创 2018-11-28 16:30:33 · 249 阅读 · 0 评论 -
数据结构基础02-栈和队列
栈栈(Stack):所有的插入和删除只在表的一端进行的线性表,即是一种操作受限的线性表。在表中,允许插入和删除的一端叫栈顶(top),不允许插 入和删除的另一端叫栈底(bottom)。特点“先进后出”或“后进先出”(LIFO,Last In First Out)。n = 0 时称为空栈(此时栈中无任何元素)。栈的操作进栈(压栈) PUSH出栈(弹栈) POP栈的应用1.进制转换2...原创 2018-11-26 16:49:12 · 193 阅读 · 0 评论 -
数据结构基础01-基本概念和术语/线性表
本文系列数据结构基础01-基本概念和术语/线性表基本概念和术语数据(data): 所有能输入到计算机中去的描述客观事物的符号。数值性数据非数值性数据(多媒体信息处理)数据元素(data element): 数据的基本单位,也称结点(node) 或记录(record)数据项(data item): 有独立含义的数据最小单位,也称域(field)数据 > 数据元素 > ...原创 2018-11-26 14:00:59 · 824 阅读 · 0 评论 -
红黑树的删除操作
本文共分为两篇红黑树的定义和插入操作和本篇 红黑树的删除操作将红黑树内的某一个节点删除。需要执行的操作依次是:首先,将红黑树当作一颗二叉查找树,将该节点从二叉查找树中删除;然后,通过"旋转和重新着色"等一系列来修正该树,使之重新成为一棵红黑树。详细描述如下:第一步:将红黑树当作一颗二叉查找树,将节点删除。算法导论的伪代码:移植操作把子节点v移植到u的位置上去。删除操作这...原创 2018-11-23 17:17:20 · 377 阅读 · 1 评论 -
带有根节点的二叉排序树删除方法
原文: 二叉排序树的查找、插入、删除添加链接描述对删除方法添加对根节点的支持/** * 删除指定数据的节点 * * @param data */ public void delete(int data) { if (mRoot == null ) { //根节点为空 return; } ...原创 2018-11-21 18:16:25 · 1829 阅读 · 0 评论 -
二叉排序树的查找、插入、删除
我们知道,二分查找可以缩短查找的时间,但是有个要求就是 查找的数据必须是有序的。每次查找、操作时都要维护一个有序的数据集,于是有了二叉排序树这个概念。上篇文章 我们介绍了 二叉树 的概念,二叉树有左右子树之分,想必在区分左右子树时有一定的规则。现在我们来介绍二叉树的一种特殊形式 — 二叉排序树,了解它的区分策略及常用操作。二叉排序树的定义什么是二叉排序树 Binary Sort Tree,...原创 2018-11-20 18:36:47 · 992 阅读 · 0 评论 -
二叉树的深度优先遍历和广度优先遍历
分析二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。中序遍历:对任一子树,先遍历其左子树,然后访问...原创 2018-11-14 15:12:27 · 2413 阅读 · 0 评论 -
哈夫曼树(赫夫曼树、最优树)和Java实现
赫夫曼树,别名“哈夫曼树”、“最优树”以及“最优二叉树”。学习哈夫曼树之前,首先要了解几个名词。哈夫曼树相关的几个名词路径:在一棵树中,一个结点到另一个结点之间的通路,称为路径。图 1 中,从根结点到结点 a 之间的通路就是一条路径。路径长度:在一条路径中,每经过一个结点,路径长度都要加 1 。例如在一棵树中,规定根结点所在层数为1层,那么从根结点到第 i 层结点的路径长度为 i - 1 。...原创 2018-11-13 20:53:14 · 797 阅读 · 0 评论 -
二叉树的三种访问方式
先序遍历按照根节点->左子树->右子树的顺序访问二叉树先序遍历:(1)访问根节点;(2)采用先序递归遍历左子树;(3)采用先序递归遍历右子树;(注:每个节点的分支都遵循上述的访问顺序,体现“递归调用”)先序遍历结果:A BDFE CGHI思维过程:(1)先访问根节点A,(2)A分为左右两个子树,因为是递归调用,所以左子树也遵循“先根节点-再左-再右”的顺序,所以访...原创 2018-11-13 17:08:01 · 4295 阅读 · 0 评论 -
一道时间复杂度算法题
时间复杂度算法原创 2019-07-10 16:42:00 · 7020 阅读 · 1 评论 -
Java求最大公约数和最小公倍数
Java求最大公约数和最小公倍数原创 2018-12-10 14:52:07 · 1458 阅读 · 0 评论 -
全排列之JAVA实现
全排列之JAVA实现原创 2018-12-07 18:11:58 · 499 阅读 · 0 评论 -
A+B problem 用位运算完成两数相加
用位运算完成两数相加原创 2018-11-19 18:31:14 · 412 阅读 · 0 评论 -
如何更好的理解和掌握 KMP 算法?
有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但KMP算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。我试着从这个思路再介绍一下。大家只需要记住一点,PMT是什么东西。然后自己临时推这个算法也是能推出来的,完全不需要死记硬背。KMP算法的核心:PMTKMP算法的核心,是一个被称为部分匹配表(Part...原创 2019-06-13 18:23:47 · 302 阅读 · 0 评论 -
红黑树的定义和插入操作
红黑树的定义和插入操作原创 2019-12-31 22:51:56 · 658 阅读 · 0 评论