美文网首页
你真的知道数据结构吗?

你真的知道数据结构吗?

作者: 沐雨芝录 | 来源:发表于2019-03-11 11:32 被阅读0次

前言:

普及一下顺序存储结构与链表存储结构。对应八大数据结构的数组和链表

1)顺序存储结构的内存地址一定是连续的。
优点:存储密度大(=1),存储空间利用率高。
缺点:插入或删除元素时不方便。

2)链表存储结构的内存地址不一定是连续的。
优点:插入或删除元素时很方便。
缺点:存储密度小(<1),存储空间利用率低。

八大数据结构:

    1. 【数组】(顺序存储结构)
const arr = new Aarray(100);
arr[0] = 1;

优点:
1、按照索引查询元素速度快
2、按照索引遍历数组方便

缺点:
1、数组的大小固定后就无法扩容了
2、数组只能存储一种类型的数据
3、添加,删除的操作慢,因为要移动其他的元素。

适用场景:
频繁查询,对存储空间要求不大,很少增加和删除的情况。


    1. 【链表】(链表存储结构)

链表的优点:
不需要初始化容量,可以任意加减元素;
添加或者删除元素时只需要改变前后两个元素结点的指针域指向地址即可,所以添加,删除很快;

缺点:
因为含有大量的指针域,占用空间较大;
查找元素需要遍历链表来查找,非常耗时。

适用场景:
数据量较小,需要频繁增加,删除操作的场景


    1. 【队列】

a. 栈的特点是:先进先出。
b. 适用于多线程阻塞队列管理中。


    1. 【栈】(顺序存储结构与链式存储结构两种)

a. 栈的特点是:先进后出。
b. 栈的插入称为进栈push。栈的删除称为出栈pop
c. 栈常应用于实现递归功能方面的场景,例如斐波那契数列。


    1. 【树】(二叉树是数组和链式结合的方法,添加,删除,查找都很快)
      定义:由n(n>=1)个有限节点组成一个具有层次关系的集合;根朝上,叶朝下。

\color{blue}{一般我们都用二叉树,特点如下:}
相对本节点较小的值保存在左节点,相对本节点较大的值保存在右节点。

\color{blue}{完全二叉树:}
对于一个树高为h的二叉树,如果其第0层至第h-1层的节点都满。如果最下面一层节点不满,则所有的节点在左边的连续排列,空位都在右边。

\color{blue}{平衡二叉树:}
左子树高度 - 右子树高度 <=1 。(ps:子树高度计算,取最大节点数即可)。
当节点的平衡因子大于2时,说明是左子树深度偏大,此时需要右旋或者左右旋。小于2则反之。


    1. 。【堆】

定义:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。
(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4…n/2)。

特点:
a. 堆是一棵完全二叉树
b. 从树根到子树数据分为从大到小(大顶堆),或者从小到大(小顶堆)


    1. 【散列图】
      也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。
    1. 【图】
      图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
      按照顶点指向的方向可分为无向图和有向图:

相关文章

  • 你真的知道数据结构吗?

    前言: 普及一下顺序存储结构与链表存储结构。对应八大数据结构的数组和链表。 1)顺序存储结构的内存地址一定是连续的...

  • 你知道吗

    你知道吗?你确定你真的知道吗?你真的确定你知道吗?你真真正正的知道,你确定你知道吗?有问题上知乎,这可以...

  • 你知道吗?

    “你知道吗?”“你真的知道吗?”“你确定你知道吗?”“你真的确定你知道吗?” 这是今年世界杯上某网站的广告,用的是...

  • 你爱哥哥,真的值得吗?

    妈想知道 你爱着的哥哥真的值得吗 妈真的很想知道 你这样做值得吗

  • 观《对于自己,你还是个陌生人》

    01 我们真的认识自己吗?你知道你张什么样子吗?你知道你为什么会生气吗?你知道你为什么焦虑吗?你知道你想要什么吗?...

  • 作为家长,校长,你真的知道老师喜欢什么,不喜欢什么吗? 你自己

    作为校长,你真的了解你的下属,你真的知道老师需要什么吗? 作为家长,你真的知道老师喜欢什么,不喜欢什么吗? 作为教...

  • 20年的学习还不如这1分钟

    你真的知道怎么阅读吗?你真的知道怎么学习才是最有效的吗?你真的以为时间的堆积会给你带来你想要的结果吗?显而易见很多...

  • 【惜时|高效】如何利用二八原则来让你的时间更好地增值?

    你的学习工作真的高效吗?你的时间规划真的科学吗?关于时间规划,有哪些真相是你不知道的呢? 你知道二八原则吗? 二八...

  • 喜欢

    你知道自己喜欢什么吗?你知道自己的梦想是什么吗?你真的知道吗?喜欢的都是正确的吗? 这是问过自己,思考...

  • 你知道吗?

    你知道吗?我真的想你了。 你知道吗?我一个人在杭州真的可以生活的很好。 你知道吗?每次收到你的消息我都很开心。 你...

网友评论

      本文标题:你真的知道数据结构吗?

      本文链接:https://www.haomeiwen.com/subject/rztdpqtx.html