数据结构与算法1

0.1前言
本文共 2005字,建议预留 4分钟阅读。

1数组

数组是可以再内存中连续存储多个元素的结构。

int[] data = new int[100];data[0]  = 1;

显而易见数组结构的优点有:

  • 查询数据元素速度快
  • 遍历数组方便

缺点有

  • 大小固定
  • 存储类型单一
  • 改变少量数据需要调动大量数据

2 栈

栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。

栈就像是一个集装箱,先进入栈的数据在最里面。
先进栈的在里边

3队列

队列也是线性表,和栈的最大区别是先进先出,就像火车过山洞一样,只不过过的不是火车,是数据
在这里插入图片描述

4链表

链表是有指针的数据,其逻辑是由指针方向决定的。
在这里插入图片描述
链表的优点:
链表是很常用的一种数据结构,不需要初始化容量,可以任意加减元素;

缺点:
占用空间较大;
非常耗时。

举一个例子假设我现在做一个游戏,里边的所有人都可以搓火球。但是我不知道具体那个人会发火球,如果不用链表,就得每个人都写一个火球函数

5树

  1. 每个节点有零个或多个子节点;
  2. 没有父节点的节点称为根节点;
  3. 每一个非根节点有且只有一个父节点;
  4. 除了根节点外,每个子节点可以分为多个不相交的子树;
    如果满足这个结构的就是树。
    在这里插入图片描述

二叉树

  1. 每个结点最多有两颗子树,结点的度最大为2。
  2. 左子树和右子树是有顺序的,次序不能颠倒。
  3. 即使某结点只有一个子树,也要区分左右子树。

满足以上三个要求的即使二叉树,二叉树查找的速度是指数式的,非常快。

扩展:

二叉树有很多扩展的数据结构,包括平衡二叉树、红黑树、B+树等,这些数据结构二叉树的基础上衍生了很多的功能,在实际应用中广泛用到,例如mysql的数据库索引结构用的就是B+树,还有HashMap的底层源码中用到了红黑树。这些二叉树的功能强大,但算法上比较复杂,想学习的话还是需要花时间去深入的。

对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。

6散列表

散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。
在这里插入图片描述

7堆

堆是一种比较特殊的数据结构,可以被看做树的数组对象,具有以下的性质

  1. 堆中某个节点的值总是不大于或不小于其父节点的值
  2. 堆总是一棵完全二叉树
  • List item

8图

图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

这里不展开图与堆.

图片来自网络

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值