文章目录
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)