«

数据结构基础(一)

​ 我作为一个移动端的开发,像数据结构、算法之类的只是平常看看,项目中很少用得到,但是面试却必不可少,也总感觉知道总比不知道强,所以开始从头走一下数据结构和算法相关的知识,数据结构和算法不分离,所以结合着屡一下这方的相关知识:

一、概念与内容

1、数据结构:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。

根据结构分为:逻辑结构和存储结构

逻辑结构:图形结构、树形结构、线性结构、集合结构

逻辑结构

存储结构:表、堆栈、队列、数组、树、二叉树、图

2、算法:(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

算法的研究内容:

空间复杂度:一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。 所以多注意一些计算过程的定义的临时变量 ,防止内存空间的消耗

时间复杂度:是指执行算法所需要的计算工作量,用O(n)表示;时间复杂度计算如下:

如何把握这两者:

程序好坏=空间复杂度+时间复杂度+应用场景(更重要);三者中应用场景还是最主要的

二、线性表之顺序存储结构

1、顺序表:常见 数组、Arraylist

优点:尾插效率高,支持随机访问

缺点:中间插入或者删除效率低

三、链表

1、单链表

2、单链表环

3、双链表

4、双链表环

Share Comment on Twitter