下一篇:线性结构之数组和链表
1.数据结构的分类
- 数据的逻辑结构
指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后间关系,而与他们在计算机中的存储位置无关。逻辑结构包括:
1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
2.线性结构:数据结构中的元素存在一对一的相互关系;
3.树形结构:数据结构中的元素存在一对多的相互关系;
4.图形结构:数据结构中的元素存在多对多的相互关系。
- 数据的物理结构(存储结构)
数据的逻辑结构在计算机存储空间中的存放形式称为数据的物理结构(也称为存储结构)。一般来说,一种数据结构的逻辑结构根据需要可以表示成多种存储结构。常用的存储结构有:
顺序存储、链式存储、索引存储和哈希存储等。
***数据的顺序存储结构***的特点是:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;
***非顺序存储结构***的特点是:借助指示元素存储地址的指针表示数据元素之间的逻辑关系
tips:同一逻辑结构可以对应不同的物理结构(存储结构);算法的设计处决于数据的逻辑结构,而算法的实现依赖于指定的物理结构(存储结构)关系到数据的存储实现
2.算法优劣的衡量
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量
- 时间复杂度
算法的时间复杂度是指执行算法所需要的运行时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做:T(n)=Ο(f(n))
note:T(n)的单位不是指具体的秒、毫秒,而是一个基本表达式执行次数(常量次数的算作一次)。如:一个输入长度为n的数组,打印出每个元素的内容;这个方法的时间复杂度就是O(n)
时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。
如:T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)
常见的复杂度表达式比较,所消耗的时间从小到大
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
- 空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。
下一篇:线性结构之数组和链表
此文要是对你有帮助,如果方便麻烦点个赞,谢谢!!!