1、什么是数据结构
数据结构
相互之间存在一种或多种特定关系的数据元素的集合。
2、数据的逻辑结构
集合,所有数据在同一个集合中,是关系的平等。
线性,数据和数据之间是一对一的关系
树, 一对多
图,多对多
3、数据的物理结构(在内存当中的存储关系)
顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致(像数组一样)
链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。(再一块空间中存储通过指正来确定对于的位置,只要指针指向的位置是对的就可以形成一个相对稳定的形式上的数据链表)
struct Per 数据元素
{
char name;//数据项
int age;
char phone;
}
struct Per list[100]; //数据对象
数据的类型,ADT abstruct datatype
是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
原子类型,int,char,float(C语言中基本数据类型)
结构类型,sturct, union,(通过结构体和共用体来集合多种数据结构,就像一个箱子一样,把基本数据类型装到里面,通过这个来传输效率较高也不会少传输什么东西)
抽象数据类型, 数学模型 + 操作。
4、程序与算法的关系
程序 = 数据 + 算法
通过数据结构的类型加上算法的加持能解决绝大部分的问题
5、算法,
是解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。(算法用的好,时间复杂度少,程序效率快)
6、算法的特征,
1,输入,输出特性,输入时可选的,输出时必须的。
2,有穷性,执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。
3,确定性,同一个输入,会得到唯一的输出。
4,可行性,每一个步骤都是可以实现的。
7、算法的设计,
1,正确性,
语法正确
合法的输入能得到合理的结果。
对非法的输入,给出满足要求的规格说明
对精心选择,甚至刁难的测试都能正常运行,结果正确
2,可读性,便于交流,阅读,理解
3,健壮性,输入非法数据,能进行相应的处理,而不是产生异常(这个非常重要如果你是相应的再公司做开发的人员这个得重点考虑,不让测试晚上给你打电话你就知道了)
4,高效,存储低,效率高
8、算法时间复杂度
分析算法效率的两个指标
8.1 时间复杂度
-也就是执行这个算法所花时间的度量
是指算法在执行过程中所需时间的量度。它衡量的是算法的执行时间随输入规模的变化情况,通常用大O记号表示,如O(n)、O(log n)等
8.2 空间复杂度
是指算法在执行过程中所需存储空间的量度。它衡量的是算法的内存使用情况,通常也用大O记号表示。
如果你的是一层for循环,每次执行的次数为一,那么他的时间复杂度就为n;
如果你的是两层for循环,每次执行的次数为一,那么他的时间复杂度就为n^2;
建议参考这张图片
这个是时间复杂度的大小关系,越小越好哦!
两种存储结构的优缺点:
1. 顺序存储:采用一段连续的内存空间保存元素(数组)
优点:空间连续,访问方便
缺点:插入删除需要移动大量元素、需要预分配内存空间,容易造成存储空间碎片
2. 链式存储:采用一组非连续的内存空间保存元素(链表)
优点:插入和删除数据方便、不需要预分配内存
缺点:访问元素效率低
3. 散列存储(哈希存储)将数据元素的存储位置与关键码之间建立确定对应关系从而实现查找的存储方式
4. 索引存储:通过关键字构建索引表、通过索引表来找到数据的存储位置
补充:
接下来更新的重点学习内容
顺序表、链式表、顺序栈、链式栈、顺序队列、链式队列、二叉树、哈希表
如果喜欢看记得关注哦!
我会用最少的文字,最简单的道理,通俗易懂的讲解数据结构,如果你被期末数据结构困扰,还是忘记了要重新温习,我都会给你最好的帮助!