【算法与数据结构】简要概括算法与数据结构的关系和大纲

数据结构

在计算机科学中,数据结构(data structure)是计算机中存储、组织数据的方式。而数组和链表是所有的数据结构的底层结构,也就是计算机中的所有的数据结构形式都是有这两种结构构成的,举个例字这种数据结构一般都是由链表这个数据结构来构成。还有我们编程经常使用的HashMap是由数组与链表这两种结构来进行实现实现的,当然这个链表一般是红黑树,而红黑树的底层是链表。。。。。

请添加图片描述

树结构示意图

图片来自网络

红黑树的结构示意图

数组

数组是最基础并且最常用的数据结构,它的结构特性可以让随机查询或者说访问特定节点的时间复杂度达到恐怖的O(1)。。。。

如果想要是实现树或了解数组可以参考下面这篇文章。。。。
链接: Array(数组)编程实现与结构解析===>数组.

链表

链表也是最基础并且最常用的数据结构,它的结构特性可以让增加、删除这两种执行方式的时间复杂度达到O(1)

常用的数据结构与实现的大纲

  • 堆栈(Stack)
  • 队列(Queue)
  • 数组(Array)
  • 链表(Linked List)
  • 树(Tree)
  • 图(Graph)
  • 堆积(Heap)
  • 散列表(Hash table)
结构类型数据结构
抽象类型列表、堆栈、队列、双端队列优先队列、双端优先队列、集合、并查集、线段树。。。
数组字符串、位数组、动态数组、哈希表、哈希数树组、稀疏矩阵。。。
关联表、链表、跳跃列表、松散链表、异或链表
线段树、自平衡二叉查找树、B树、二叉树、AA树、AVL树、红黑树、平衡树、伸展树、二叉查找树、堆、二叉堆左偏树、二项堆斐波那契堆、R树、R*树、R+树、Hilbert R树、前缀树、哈希树
有向图、有向无环图、二元决策图、无向图、确定性非循环有限自动机

算法

算法(algorithm),在数学和计算机科学之中,指一个被定义好的、计算机可施行其指示的有限步骤或次序。而在计算机中每一种算法基本上都对应了一个或多个数据结构,它们是伴生的关系。。。

比较常见算法的分类

  • 排序
  • 搜索
  • 最短路问题
  • 最小生成树
  • 最大流、最小割
  • 线性规划
  • 顺序统计量
  • 实用性算法
  • 抽象算法

排序

算法分类排序算法
比较排序冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、鸡尾酒排、序梳排序、侏儒排序、图书馆排序、内省排序、奇偶排序
线性时间排序鸽巢排序、基数排序、计数排序、桶排序
并行排序排序网络Batcher、归并网络
拓扑排序

搜索

实现方式搜索算法
列表线性搜索、二分搜索、插值搜索
树、图广度优先搜索、最良优先搜索、A*深度优先搜索、迭代深化深度优先搜索、深度限制搜索、双向搜索分枝限定法
字符串KMP算法、博耶-穆尔字符串搜索算法、AC自动机算法、拉宾-卡普算法、bitap算法

最短路问题

  • 戴克斯特拉算法
  • 贝尔曼-福特算法
  • A*搜索算法
  • Floyd-Warshall算法

最小生成树

  • 普林姆算法
  • 克鲁斯克尔算法

最大流、最小割

  • 福特-富尔克森算法
  • 埃德蒙兹-卡普算法
  • 迪尼茨算法

线性规划

  • 单纯形法
  • 卡马卡尔算法

顺序统计量

  • 选择算法
  • 中位数的中位数

实用性算法

实用性算法作用
随机化算法如何让计算机快速产生随机数(random)
近似算法这是一种比较符合人类感官的算法,计算机的运行是一定要数值确定的。可实际情况是“差不多得了”,才是人类的基本生活规律。如:绝对值、四舍五入等等。这些都是都是非常简单近似算法,比较难的数学上的近似这里就不列举了。。

抽象算法

  • 分治法
  • 动态规划
  • 贪心算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值