数据结构的认识

1、为什么要学习数据结构

在我们生活中,要学习识字,写作,出书

编程也一样,学习数据结构就像生活中识字一样。然后在进行实践,实现简单的数据结构的操作,最后开发出相应的应用APP,网站等。

数据结构,在开发,面试中都很有用,面试中大多数面试官喜欢问数据结构,来判断一个人编程是否学习的扎实。

2、数据结构有哪些

线性表、栈、队列、(字符串)、数组、广义表、树、二叉树、图。

重点:线性表、二叉树

对应的数据结构操作:添加、更新、删除、查询、排序等

3、数据结构与算法入门

1、基本概念

数据对象 = 数据项 + 数据元素 (参考二维表)

数据结构 = 逻辑结构 +存储结构

数据结构= 逻辑结构 + 存储结构 +(在存储结构上的运行、操作)
在这里插入图片描述

2、数据结构类型

1、逻辑结构

集合结构:确定性,唯一性,无序性(洒在地上的豆子)hashSet

线性结构:简单来理解就是 一对一(一条线)

树状结构:一对多(公司层次图)

网状结构:多对多(地铁路线图)

举个简单的例子:干刚入学的时候,可能每个人都不认识,就是集合结构,后面进行了学号分配,那么每个人的学号就是线性结构了,后面开始上课了。每个同学要交作业给组长,后面组长交作业给学习委员,最后交给老师,这就是树状结构。后面大家都很熟了,可能你和我是朋友和别也是朋友,那我和别人也是朋友,这种关系,就是网状结构了。哈哈,是不是很好理解啊。

2、存储结构

顺序存储:数组(查询快,删除,添加慢)
在这里插入图片描述

链式存储:查询慢,增删快
在这里插入图片描述

索引存储:图书,字典的目录
在这里插入图片描述

散列存储:添加,查询速快快(哈希表)在这里插入图片描述

3、数据结构总结

在这里插入图片描述

4、算法

特点:输入、输出、可行性(时间,问题合理)、有穷性(不要死循环)、确定性(每次结果一样)

生活中我们解决问题的思路

算法也就是计算机解决问题的过程,思路。
在这里插入图片描述

评价算法的优劣的依据:根据复杂度(时间复杂度,空间复杂度)

5、算法的时间复杂度

时间复杂度:就是时间频度去掉阶项和首项常数。(频度:语句执行的次数)T(n) = O(n)

在这里插入图片描述

时间复杂度越大,效率越低。

在这里插入图片描述

6、空间复杂度

1、双重循环等,算法中临时变量的个数与问题规模无关,空间复杂度均为S(n)=O(1)

在这里插入图片描述

2、递归算法,每次递归,都会调用本身,开辟空间,所有空间复杂度为S(n) = O(n)

猜你喜欢

转载自blog.csdn.net/qq_40749830/article/details/105716984