![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试问题——数据结构
文章平均质量分 58
李 子
这个作者很懒,什么都没留下…
展开
-
三大范式
三大范式概念解释: 三大范式其实就是数据库建表的规范。第一范式:要求一张表中的数据每一列都是不可分割的原子项数据第二范式:消除部分依赖,要求一张表中的每一列都完全依赖于主键(针对于组合主键),也就是不会出现某一列只和部分主键相关第三范式:消除传递依赖,要求一张表中的每一列都和主键是直接依赖的,不是间接依赖举例分析:第一范式:要求一张表中的数据每一列都是不可分割的原子项数据例如下面的这张表就是不符合第一范式的,因为家庭信息和学校信息中的数据都不是原子项数据。修改之后:此时所有的原创 2021-02-26 11:47:08 · 8241 阅读 · 1 评论 -
插入排序
插入排序:每一趟将一个待排序的元素,按其关键字的大小插入到已排序序列的适当位置,直到全部插入完成。常见的插入排序有以下三种。1、直接插入排序1)过程:直接插入排序是一种最简单的排序方法,其过程就是依次将每个元素插入到一个有序的序列中去。不过它有个缺点,就是当我们的数据基本有序时,每次插入都要移动位置,此时的插入效率是很低的。为了解决这种情况,又产生了拆半插入排序,希尔排序。工作原理:插入排序在实现上,从后面向前扫描(一开始从下标为1的元素开始,往下标为0的元素遍历),在扫描过程中,需要反复把原创 2021-02-21 12:08:09 · 131 阅读 · 0 评论 -
平衡二叉树、B树和B+树
平衡二叉树概念 平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构; 特点 平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则:(1)非叶子节点只能允许最多两个子节点存在。(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值(这里值是基于自己的算法规则而定的,比如hash值);总结平衡二叉树特点:(1)非叶子节原创 2021-02-20 20:53:43 · 1386 阅读 · 0 评论 -
链表和数组的区别
数组和链表的区别:二者都属于一种数据结构从逻辑结构来看1.数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。2.链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素从内存存储来看1. (静态)数组从栈中分配空间,对于程序员方便快速,但是自由度...原创 2021-02-20 11:18:29 · 601 阅读 · 0 评论 -
HashMap
1.HashMap的特性1.HashMap存储键值对实现快速存取,允许为null。key值不可重复,若key值重复则覆盖。2.非同步,线程不安全。3.底层是hash表,不保证有序(比如插入的顺序)2.HashMap底层原理基于hashing的原理,jdk8后采用数组+链表+红黑树的数据结构。我们通过put和get存储和获取对象。当我们给put()方法传递键和值时,先对键做一个hashCode()的计算来得到它在bucket数组中的位置来存储Entry对象。当获取对象时,通过get获取到b原创 2021-02-18 23:57:21 · 154 阅读 · 0 评论 -
红黑树
平衡二叉树:任意节点的左右子树高度相差不能大于1红黑树的目的是为了解决动态插入、删除后二叉查找树性能退化的问题1.红黑树的特性(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。[注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!](4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。2.红黑树的基本操作1.左旋 右旋左旋是将某个节点旋转为其右孩子的左孩子,再.原创 2021-02-18 11:16:04 · 148 阅读 · 0 评论