B树(B-tree)
摘要:图解B树及C#实现(1) 目录 前言 索引原理 局部性(Locality) 数据的局部性 内存存储和磁盘存储 磁盘存储适合的索引结构 B树简介 定义 B树中数据的有序性 用C#定义数据结构 插入数据的过程 分裂:新节点诞生的唯一方式 根节点的分裂 非根节点的分裂 分裂导致树的高度增加 提前分裂 插入
阅读全文
线段树(Segment Tree)是一个基于分治的数据结构。
摘要:线段树(Segment Tree)是一个基于分治的数据结构。 线段树杂谈 概念: 线段树(Segment Tree)是一个基于分治的数据结构。 通常处理区间,序列中的查询,更改问题。大体上有单修,单查,区修,区查等操作。但因为其可维护变量的多样性,所以常在各类题目中遇到。准确说,是各类优化中遇到。
阅读全文
了解数据结构
摘要:5分钟了解数据结构 转载请注明出处:https://www.cnblogs.com/morningli/p/15884734.html 老外真的很喜欢创造新名词。春节的时候我给我姐选显示器,因为我姐是做设计的,我特地研究了一下显示器的色域。我发现除了我们常用的sRGB外,还有个Adobe RGB。后
阅读全文
图解单链表反转
摘要:图解单链表反转 前言 反转链表是程序员必备的基本素养,经常在面试、笔试的过程中出现。一直觉得反转链表实现代码不是很好理解,决定搬leetcode那道经典反转链表题出来,用十多张图去解析它,希望加深大家对链表反转的理解,谢谢阅读。 leetcode的反转链表原题&答案 题目描述: 反转一个单链表。 输
阅读全文
B+树比B树更适合实际应用中操作系统的文件索引和数据库索引
摘要:B+树比B树更适合实际应用中操作系统的文件索引和数据库索引 为什么选择B+树作为数据库索引结构? 背景 首先,来谈谈B树。为什么要使用B树?我们需要明白以下两个事实: 【事实1】不同容量的存储器,访问速度差异悬殊。以磁盘和内存为例,访问磁盘的时间大概是ms级的,访问内存的时间大概是ns级的。有个形象
阅读全文
程序是由数据结构属于静态的部分和算法的调用为动态部分构成
摘要:数据结构与算法之线性结构和树结构 什么是数据结构 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系的组成。 数据结构就是设计数据以何种方式存储在计算机中,列表、字典等都算是数据结构。 程序=数据结构+算法,数据结构属于静态的部分,算法的调用为动态部分 数据结构就是
阅读全文
红黑树
摘要:红黑树 https://www.cnblogs.com/wuqinglong/p/9709048.html 目录 概念 特征 旋转 左旋 左旋示例图 参考TreeMap的左旋代码 右旋 右旋示例图: 参考TreeMap的右旋代码: 寻找节点的后继 插入 情况1: 新节点(当前节点)为根节点 情况2:
阅读全文
B+树和LSM存储引擎代表树和B-树
摘要:B+树和LSM比较 https://blog.csdn.net/u013928917/article/details/75912045 在关系型数据库mysql中普遍使用B+树作为索引,在实际中索引也分为聚集索引和非聚集索引,而在hbase中则采用的是LMS树组织数据的。两者各有自己的优劣。 B+树
阅读全文
二叉树
摘要:二叉树 https://www.cnblogs.com/weiweiblog/p/9583240.html 0. 几个概念 完全二叉树:若二叉树的高度是h,除第h层之外,其他(1~h 1)层的节点数都达到了最大个数,并且第h层的节点都连续的集中在最左边。想到点什么没?实际上,完全二叉树和堆联系比较紧
阅读全文
二叉树
摘要:二叉树 一、二叉树就是这么简单 本文撇开一些非常苦涩、难以理解的概念来讲讲二叉树,仅入门观看(或复习).... 首先,我们来讲讲什么是树: 树是一种非线性的数据结构,相对于线性的数据结构(链表、数组)而言,树的平均运行时间更短(往往与树相关的排序时间复杂度都不会高) 在现实生活中,我们一般的树长这个
阅读全文
多路搜索树
摘要:MySQL索引设计背后的数据结构 在我们公司的DB规范中,明确规定: 1 2 1、建表语句必须明确指定主键 2、无特殊情况,主键必须单调递增 1 2 1、建表语句必须明确指定主键 2、无特殊情况,主键必须单调递增 1 2 1、建表语句必须明确指定主键 2、无特殊情况,主键必须单调递增 1 2 1、建
阅读全文
红黑树
摘要:红黑树 概述 红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫•贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的
阅读全文
栈和队列
摘要:栈和队列的相互实现 关于栈和队列的考察 栈和队列都是比较常用的数据结构。栈的应用非常的广泛,比如说,递归函数的实现就是借助于栈保存相关的数据。操作系统中每个线程也会使用栈来保存函数调用涉及到的一些参数和其他变量等。栈最大的一个特点就是先进后出(FILO—First-In/Last-Out)。 队列和
阅读全文
Bitmap
摘要:Bitmap篇 在前一篇中介绍了使用API做Distinct Count,但是计算精确结果的API都较慢,那有没有能更快的优化解决方案呢? 1. Bitmap介绍 《编程珠玑》上是这样介绍bitmap的: Bitmap是一个十分有用的数据结构。所谓的Bitmap就是用一个bit位来标记某个元素对应的
阅读全文
数据结构之堆
摘要:数据结构之堆 前序: 堆是基础数据结构中二叉树的一种,它还是笔试和面试题的常客。本文旨在通俗地的简介下堆的一些知识,附加一道爱奇艺笔试题,相信我,绝对通俗易懂!!!!!。 堆定义及其分类: 堆是基础数据结构中二叉树的一种,堆不一定是完全二叉树但是一般采用完全二叉树,主要是利于存储和运算,堆分三种,下
阅读全文
Data Structure
摘要:Data Structure主要是数据结构和一些常见的算法堆排序(概念、原理、实现)摘要: 堆排序是非常常用的算法之一,应用包括海量数据筛选、普通排序、笔试面试等,一些优秀的开源软件如libevent,它的定时器管理部分就是用的堆排序,不过做了优化,有点晦涩!阅读全文posted @2015-04-...
阅读全文
几种常用树介绍
摘要:几种常用树介绍Binary Search Tree(二叉查找树、二叉排序树、二叉搜索树)指一棵空树或者具有下列性质的二叉树:1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2)任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3)任意节点的左、右子树也分别为二叉查找树。4)没有键值相等的节点(no duplicate nodes)。Balanced Binary Search Tree(平衡二叉查找树、AVL树)在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能
阅读全文
C#知识点总结系列:C# 数据结构
摘要:C#知识点总结系列:C# 数据结构线性表(Linear List) 具有相同特性的数据元素的一个有限序列。线性表的顺序存储结构—顺序表 线性表的顺序存储结构是指用一块地址连续的存储空间依次存储线性表的数据元素。这种存储方式好比改革前的银行,需要在业务窗口前排队取钱。由此可以看出顺序表中逻辑上相邻的元素在物理上也是相邻的。顺序表的特点 1.容量固定 存储顺序表的元素需要一整块内存空间,因而顺序表的容量一旦确定,便不能更改。 2.访问速度快 在顺序表使用索引访问数据元素是非常简单、快速的。如图2.3所示,假设顺序表中的第一个元素的位置是Loc,每个数据元素所占用的存储空间为n,那么可以很快地计算出
阅读全文
二叉树的遍历
摘要:二叉树的遍历(递归,迭代,Morris遍历)二叉树的遍历:先序,中序,后序;二叉树的遍历有三种常见的方法,最简单的实现就是递归调用,另外就是飞递归的迭代调用,最后还有O(1)空间的morris遍历;二叉树的结构定义:1 struct TreeNode {2 int val;3 TreeNode *left;4 TreeNode *right;5 TreeNode(int x) : val(x), left(NULL), right(NULL) {}6 };1.先序遍历:递归:1 void preOrderRecursive(TreeNode *root...
阅读全文
C++数据结构之二叉查找树(BST)
摘要:C++数据结构之二叉查找树(BST)二分查找法在算法家族大类中属于“分治法”,二分查找的过程比较简单,代码见我的另一篇日志,戳这里!因二分查找所涉及的有序表是一个向量,若有插入和删除结点的操作,则维护表的有序性所花的代价是O(n)。就查找性能而言,二叉查找树和二分查找不分伯仲,但是,就维护表的有序性而言,二叉排序树无须移动结点,只需修改指针即可完成插入和删除操作,且其平均的执行时间均为O(lgn),因此更有效。二叉查找树,顾名思义,是一种可以用来二分查找的树数据结构,其左孩子比父节点小,右孩子比父节点大,还有一个特性就是”中序遍历“可以让结点有序。在对关键字进行查找的时候,根据关键字与根节点的
阅读全文