数据结构与算法总结(1)

                       数据结构与算法总结(1)

开发工具与关键技术:数据结构与算法总结
作者:昨夜星辰
撰写时间:2020年 04月 28日
一、数据结构的概念:
数据结构是指相互之间具有一定的联系的数据集合,数据结构主要研究逻辑结构、逻辑结构的延伸及基本算法,物理结构、运算集合,而逻辑结构又分为三大类:
(1)线性结构:结构中的数据元素之间存在一对一的线性关系,除第一个和最后一个数据元素外,每个元素只有一个前驱和一个猴急数据元素。
(2)树结构:结构中的数据元素之间存在着一对多的层次关系,除根节点外,每一个数据元素只有一个前驱元素,可只有0个或若干个后继数据元素。
(3)图结构:结构中的元素之间存在多对多的关系,每个数据元素可有0个或若干个前驱数据元素和0个或若干个后继元素。
数据结构的三个主要组成部分;
1、 逻辑结构:数据之间的逻辑关系的描述。
2、 存储结构:数据元素在计算机中的存储及逻辑关系的表现称为数据的存储结构或物理结构。
3、 数据操作:对数据进行运算。
4、 数据类型:指的是一个值的集合和定义在该值集上的一组操作的总称;数据类型是和数据结构密切相关的一个概念。在C语言中,数据类型有:基本类型和构造类型。
5、 数据结构不同于数据类型,也不同于数据对象,它不仅描述数据类型的数据对象,而且要描述数据对象各元素之间的相互关系。
二、算法的概念和特征
(1)数据结构中最重要的成员—算法:算法是解决问题的方法,是程序设计的精髓,程序设计的实质就是构造解决问题的算法。算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。算法的概念和特性:算法是对特定问题求解步骤的一种描述,它是指令的有限序列。
(2)一个算法中应该具有五个重要的特征:
1、有穷性:一个算法应包含有限个操作步骤。即一个算法在执行若干个步骤之后应该能够结束,而且每一步都在有限时间内完成。
2、确定性:算法中的每一步都必须有确切的含义,不能产生二义性。
3、可行性:算法中的每一个步骤都应该是能有效地执行,并得到确定的结果。
4、输入:所谓输入,是指在算法执行时,从外界取得必要的数据。计算机运行程序的目的是为了进行数据处理,在大多数情况下,这些数据需要通过输入得到。有些情况下,数据已经包含在算法中,算法执行时不需要任何数据,所以一个算法可以有零个或多个输入。
5、输出:一个算法有一个或多个输出,这是算法进行数据处理后的结果。没有输出的算法是毫无意义的。
(3)算法设计的要求:算法设计的好坏关乎程序的执行效率,算法的设计必须满足下列四个要求:
1、正确性:正确性的含义是算法对于一切合法的输入数据都能够得出满足要求的结果,事实上要验证算法的正确性是极为困难的,因为通常情况下合法的输入数据量太大,用穷举法逐一验证是不现实的。所谓的算法正确性是指算法达到了测试要求。
2、可读性:算法的可读性是指人对算法阅读理解的难易程度,可读性高的算法便于交流,有利于算法的调试和修改。通常增加算法的可读性是在书写算法时采用按缩进格式书写、分模块书写等方法可增加算法的可读性。
3、健壮性:对于非法的输入数据,算法能给出相应的响应,而不是产生不可预料的后果。
4、效率与低存储量的需求:效率指的是算法的执行时间。对于解决同一问题的多个算法,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。存储量需求越小的算法效率越高。
(4)算法的分析,解决一个问题可以有多种算法,那么该怎样判断他们的优劣的标准很多,但一个算法正确性必须保证外,一个主要的指标是他的效率。
1、算法的效率的度量:算法执行的时间是其对应的程序在计算机上运行所消耗的时间。程序在计算机上运行所需时间与下列因素有关:算法本身选用的策略;② 书写程序的语言;③ 编译产生的代码质量;④ 机器执行指令的速度;⑤ 问题的规模。第①条是算法好坏的根本,第②③条要看具体的软件支持,第④条要看硬件的性能。度量一个算法的效率应抛开具体机器的软、硬件环境,而书写程序的语言、编译产生的机器代码质量、机器执行指令的速度都属于软硬件环境。所以抛开计算机软硬件相关的因素,一个程序的运行时间,仅依赖于算法的好坏和问题的规模。对于一个特定算法只考虑算法本身的效率,而算法自身的执行效率是问题规模的函数。
对于同一个问题,选用不同的策略就对应不同的算法,不同的算法对应有各自的问题规模函数,根据这些函数就可以比较算法的优劣。算法的效率包括时间与空间两个方面,分别称为时间复杂度和空间复杂度。
2、算法的时间复杂度:一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。语句执行一次实际所需的具体时间是与机器的速度、编译程序质量、输入数据等密切相关,与算法设计的好坏无关。所以,可用算法中语句的执行次数来度量一个算法的效率。算法的时间复杂度,记做:T(n)=O(f(n))。
3、算法的空间复杂度:采用空间复杂度作为算法所需存储的量度,记做S(n)=O(f(n)),其中n为问题的规模。 程序执行时,除了需存储本身所用的指令,常数,变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。 其中对于输入数据所占的具体存储量只取决于问题本身,与算法无关,这样只需要分析该算法在实现时所需要的辅助空间单元数就可以了。 算法的执行时间和存储空间的耗费是一对矛盾体,即算法执行的高效通常是以增加存储空间为代价的,反之亦然。不过,就一般情况而言,常常以算法执行时间做为算法优劣的主要衡量指标。
4、数据结构的存储方式:
数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。
元素之间的关系在计算机中有两种不同的表示方法:顺序表示和非顺序表示。由此得出两种不同的存储结构:顺序存储结构和链式存储结构。
顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。
链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针,用该指针来表示数据元素之间的逻辑结构(关系)。
顺序结构:数据元素存放的地址是连续的;链式结构:数据元素存放的地址不要求连续。
数据的逻辑结构和物理结构是密不可分的两个方面:一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值