数据结构
soliderzzz
沉迷学习,不能自拔,strategic FooYou Agent
展开
-
java Stack的基本使用并且实现一个简单的计算器
package com.bobo.normal; import com.bobo.util.StringUtil; import java.util.Stack; /** * Created with IntelliJ IDEA. * User: bobo * Date: 2019/9/16 * Description: stack实现一个 +-*?的计算器 * 所得: * 去除无效字符的方式 * 计算器运算过程中符号的优先级优先级 '(' > '*' = .原创 2020-07-19 15:14:25 · 298 阅读 · 0 评论 -
索引:位图索引理解
1. 案例 有张表名为table的表,由三列组成,分别是姓名、性别和婚姻状况,其中性别只有男和女两项,婚姻状况由已婚、未婚、离婚这三项,该表共有100w个记录。现在有这样的查询: select * from table where Gender=‘男’ and Marital=“未婚”; 姓名(Name) 性别(Gender) 婚姻状况(Marital) 张三 男 已婚 ...转载 2020-07-04 00:43:19 · 328 阅读 · 0 评论 -
散列表(上)——开放定址法
概述散列表,又称哈希表,hash表。散列表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于散列表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。设计思想Hash表采用一个映射函数 f : key —> address...转载 2019-10-28 13:24:06 · 715 阅读 · 0 评论 -
蚂蚁爬行问题
问题主题:Ants(POJNo.1852)问题描述:n只蚂蚁以每秒1cm的速度在长为Lcm的竹竿上爬行。当蚂蚁看到竿子的端点时就会落下来。由于竿子太细,两只蚂蚁相遇时,它们不能交错通过,只能各自反方向爬行。对于每只蚂蚁,我们只知道它离竿子最左端的距离为xi,但不知道它当前的朝向。请计算所有蚂蚁落下竿子的最短时间和最长时间。限制条件:1<=L<=1061<=n&l...转载 2020-02-01 19:49:19 · 1364 阅读 · 0 评论 -
森林转二叉树的过程
森林转二叉树的过程是这样的:(1)把每棵树转换为二叉树。(2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来。所以转换后的二叉树的左子树节点的个数加根节点的个数就是第一棵树的节点个数,即二叉树总节点个数m减去根节点右子树节点个数n。...转载 2020-01-22 15:02:54 · 3623 阅读 · 0 评论 -
哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度
四、哈希表的装填因子装填因子 = (哈希表中的记录数) / (哈希表的长度)装填因子是哈希表装满程度的标记因子。值越大,填入表中的数据元素越多,产生冲突的可能性越大。五、不同处理冲突的平均查找长度例:假设散列表的长度是13,三列函数为H(K) = k % 13,给定的关键字序列为{32, 14, 23, 01, 42, 20, 45, 27, 55, 24, ...转载 2020-02-01 19:55:47 · 4595 阅读 · 0 评论 -
二叉树的前序、中序、后序三种遍历
二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后右最后根)。比如上图二叉树遍历结果前序遍历:ABCDEFGHK中序遍历:BDC...转载 2020-02-01 19:02:17 · 260 阅读 · 0 评论 -
哈夫曼编码的理解(Huffman Coding)
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。哈夫曼编码,主要目的是根据使用频率来最大化节省字符(编码)的存储空间。简易的理解就是,假如我有A,B,C,D...转载 2020-01-14 15:45:20 · 928 阅读 · 0 评论 -
各种排序算法的时间空间复杂度
原创 2020-01-08 00:47:35 · 417 阅读 · 0 评论 -
二叉平衡树的旋转操作
旋转是很多二叉平衡树维持平衡的主要手段,在这里复习一下。其实旋转过程中节点位置的变化只要遵循一个原则就行了:比Root小的在左子树,比Root大的在右子树。(当然这里前提条件是左小右大)。情况一:插入F节点导致失衡:这里失衡的是A的左右子树,很容易就可以想到旋转B-A链,值得注意的是E节点,它原先在B的右子树,现在也依然在B的右子树,它原先在A的左子树,现在也依然在A的左子树。若插...转载 2020-01-01 15:31:15 · 248 阅读 · 0 评论 -
数据结构 = 逻辑结构 + 存储结构
循环队列是顺序存储的线性结构数据结构=逻辑结构(线性、非线性)+存储结构(顺序、链式、索引、散列)1)逻辑结构:数据元素间抽象化的相互关系2)存储结构:(物理结构),在计算机存储器中的存储形式逻辑结构的分类:1.按逻辑结构分为:(线性结构+非线性结构)2.逻辑结构的四种基本形态:1)...转载 2019-11-05 16:20:23 · 894 阅读 · 1 评论 -
数据结构----树
二叉排序树在介绍B树之前,先来看另一棵神奇的树——二叉排序树(Binary Sort Tree),首先它是一棵树,“二叉”这个描述已经很明显了,就是树上的一根树枝开两个叉,于是递归下来就是二叉树了(下图所示),而这棵树上的节点是已经排好序的,具体的排序规则如下:若左子树不空,则左子树上所有节点的值均小于它的根节点的值 若右子树不空,则右字数上所有节点的值均大于它的根节点的值 它的左、右...转载 2019-10-27 15:14:04 · 269 阅读 · 0 评论