常用数据结构(一)

计算机中的数据有多种多样,如何处理数据就成为了一门学问。而数据结构就是关于如何组织数据和组织好的数据怎么处理的一门学问。

数据结构包括下面三方面内容:

- 数据逻辑结构:描述数据元素之间的逻辑关系。

- 数据物理结构:描述数据元素是在具体计算机设备中如何存放的。

- 数据操作方法:也常被称为算法,是一种说明如何操作数据的方法。

这里“算法”概念有些局限,算法的正真含义是使用计算机解决特定问题的方法。
怎么样,算法一点儿也不神奇,只是解决问题的方法而已。

常见数据逻辑结构

数组

就是内存中一块连续的区域,紧密排列了一些相同类型的数据.也被称为顺序表.
image

不足:

需要事先知道同样的元素最多有多少个,不然就无法开辟出合适的内存区域(要么太多而浪费,要么太小而不足).

思考:能不能有一种数据结构,能够灵活地按需而分配空间呢?

答:动态数组或链表

动态数组,按需要可进行连续空间的增加或减少.完全按需分配.

单向链表

链表的基本单位是节点,每个节点拥有一个数据区next指针,其中数据区用于存放数据,next指针指向下一个节点。
与顺序表相比,链表可以根据需要自由选择节点的数据,从而解决了内存分配不合适的问题。且对内存空间连续块要很低,只要能满足节点的大小即可。

数组与单链表的比较

方面 数组 链表 补充说明
内存空间 连续 不连续
结构长度 一般固定 可变
增删速度 顺序表在插入和删除元素时,需要找到特定位置的元素,然后将其后面的全部元素都向前移动或向后移动,以填补或腾出空位因此顺序表的插入和删除的时间复杂度都是O(N)
链表只需要摘去或者挂上一个节点就行了,因此链表的插入和删除的时间复杂度都是O(1);
查找速度 顺序表,可以通过下标,直接询问任一元素。即时间复杂度为O(1)
链表,只能通过第一个节点开始,一个一个的沿着next指针数过去。即时间复杂度为O(N)
访问方式 可随机访问 只能顺序访问

STACK

QUEUE

跳表

散列表

二叉树

红黑树

递归树
HEAP

评价算法的标准
常用计算机算法
递归
排序
冒泡排序
插入排序
快速排序
线性排序

查找
二分查找
贪心
分治
回溯
动态规划

posted @ 2021-09-06 10:57  海林的菜园子  阅读(104)  评论(0编辑  收藏  举报