数据结构——导论

数据结构第一章

数据基本概念

数据

所有能输入到计算机中并被计算机程序处理的符号的总称

数据元素

数据的基本单位

数据项

组成数据元素的、有独立含义的、不可分割的最小单位

数据对象

性质相同的数据元素的集合,是数据的一个子集

数据结构的分类

逻辑结构

在这里插入图片描述
数据结构是相互之间存在一种或多种特定关系的数据元素的集合,与数据的存储无关
数据结构包括逻辑结构和存储结构
具体结构举例:
集合结构:数据元素除了“属于同一集合”的关系外,无其他关系
线性结构:数据元素之间存在一对一的关系
树结构:数据元素之间存在一对多的关系
图结构或网状结构:数据元素之间存在多对多的关系
集合结构、树结构和图结构都属于非线性结构

存储结构

数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构

顺序存储结构

顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,要求所有的元素依次存放在一片连续的存储空间

链式存储结构

借助于指针类型来描述链式存储结构,需要给每个节点附加指针字段,无需占用一整块存储空间

数据类型和抽象数据类型

数据类型

每一个数据都属于某种数据类型,数据类型是一个值的集合和定义在这个值集上的一组操作的总称

抽象数据类型

抽象数据类型是指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合,以及对数据对象的基本操作的集合。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法和算法分析

算法分析的两个主要方面是分析算法的时间复杂度和空间复杂度, 以考察算法的时间和空间效率。一般情况下, 鉴于运算空间较为充足, 故将算法的时间复杂度作为分析的重点。算法执行时间的数量级称为算法的渐近时间复杂度,T(n) = 0(/(n) ), 它表示随着问题规模n的增大,算法执行时间的增长率和.f(n)的增长率相同, 简称时间复杂度。

算法的重要特性(五个)

(1)有穷性:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。
(2) 确定性:对千每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,
使算法的执行者或阅读者都能明确其含义及如何执行。
(3) 可行性:算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
(4) 输入:一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,
在它们被调用时,从主调函数获得输入值。
(5) 输出:一个算法有一个或多个输出,它们是算法进行信息加工后得到的结果,无输出的
算法没有任何意义。当用函数描述算法时,输出多用返回值或引用类型的形参表示。

评价算法优劣的基本条件

(1)正确性:在合理的数据输入下,能够在有限的运行时间内得到正确的结果。
(2) 可读性:一个好的算法,首先应便千人们理解和相互交流 , 其次才是机器可执行性。可
读性强的算法有助于人们对算法的理解,而难懂的算法易千隐藏错误,且难千调试和修改。
(3) 健壮性:当输入的数据非法时,好的算法能适当地做出正确反应或进行相应处理,而不
会产生一些莫名其妙的输出结果。
(4) 高效性:高效性包括时间和空间两个方面。时间高效是指算法设计合理,执行效率高,可以用时间复杂度来度量;空间高效是指算法占用存储容量合理,可以用空间复杂度来度量。时间复杂度和空间复杂度是衡量算法的两个主要指标。

时间复杂度

一般情况下, 算法中基本语句重复执行的次数是问题规模n的某个函数f(n), 算法的时间量度记作:
T(n) = O(f(n))
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐近时间复杂度,简称时间复杂度(TimeComplexity)。
最好、最坏和平均时间复杂度:
对于某些问题的算法,其基本语句的频度不仅仅与问题的规模关,还依赖于其他因素。

空间复杂度

关千算法的存储空间需求,类似千算法的时间复杂度,我们采用渐近空间复杂度(Space Complexity)作为算法所需存储空间的扯度,简称空间复杂度,它也是问题规模n的函数,
记作:
S(n) = O(f (n))
一般情况下,一个程序在机器上执行时,除了需要寄存本身所用的指令、 常数、 变量和输入数据外,还需要一些对数据进行操作的辅助存储空间。其中,对千输入数据所占的具体存储量取决千问题本身,与算法无关,这样只需分析该算法在实现时所需要的辅助空间就可以了。

原地算法

若算法执行时所需要的辅助空间相对千输入数据量而言是个常数,则称这个算法为原地工作,辅助空间为0(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值