【算法】01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈)

【算法】01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈)

欢迎关注b站账号/公众号【六边形战士夏宁】,一个要把各项指标拉满的男人。该文章已在github目录收录。
屏幕前的大帅比大漂亮如果有帮助到你的话请顺手点个赞、加个收藏这对我真的很重要。别下次一定了,都不关注上哪下次一定。

1.数据结构的物理存储方式

  • 顺序结构:和列表基本一致
  • 链式结构:和链表基本一致

2.逻辑结构

  • 单向链表:每个节点会存储下一个节点的地址
  • 双向链表:每个节点会存储下一个节点和上一个节点的地址
  • 列表结构:参考ArrayList,内存地址紧凑排列
  • 串结构:参考字符串,多以列表方式实现
  • 栈和队列:参考Stack和Queue,即前者先进后出,后者先进先出
  • 二叉树:每个节点会以存储左右节点的方式各存储一个地址
  • :完全二叉树,即从上至下的每一层都不能为空,从左至右第一个为空的节点左侧均不为空,右侧均为空。依次对应成列表结构
  • 搜索二叉树:也叫二叉查找树、二叉排序树。在二叉树的基础上,若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值
  • :每个节点会存储一个或多个下一个节点的地址
  • 散列表:以key/value的形式进行储存(此处暂时认为不会发生哈希碰撞)

3.算法时间复杂度定义(耗时依次增加)

常数阶O(1)->对数阶O(logn)->线性阶O(n)->nlogn阶O(nlogn)->平方阶O(n2)->立方阶O(n3)->指数阶O(2^n)->阶乘阶O(n!)

4.算法分类

  • 查找类算法:以二分查找、深度优先、广度优先为代表的算法
  • 排序类算法:以分治算法的快速排序为代表的的算法
  • 计算类算法:以动态规划为代表的算法
  • 贪婪算法:以狄克斯特拉算法为代表的算法
  • 近似算法:k值近邻算法、傅里叶算法为代表的的算法
  • 压缩算法:散列算法、SHA、md5等为代表的算法
  • 其他优质算法:布隆算法
posted @ 2020-12-08 00:13  Seal_lee  阅读(131)  评论(0)    收藏  举报