数据结构与算法

数据结构与算法

开发工具与关键技术:Visual Studio 2019 
作者:李德新
撰写时间:2020年5月18日

在我们新的学习中,我们开始学习数据的结构与算法,但是我们在学习数据结构与算法之前我们也应该先去了解一下数据结构的基本概念以及算法及其描述
在这里插入图片描述
从上面我们就可以看出来,我们学习数据的结构与算法就是为了提高我们写的代码的效率然后提高我们程序的执行效率。在我们看来“算法 + 数据结构 = 程序”,这就凸显出我们学习数据的结构与算法的重要性。而且我们要成为一个优秀的程序员就必须具备以下的几点。
(1)能够熟练得选择和设计各种业务逻辑的数据结构和算法。
(2)至少能够熟练的掌握一门程序设计语言。
(3)熟知所涉及的相关应用领域的知识。
那么我们就可以继续看下面的课程。首先我们就应该要先去了解数据结构所研究的是什么,然后我们才可以分析我们所学的数据的结构与算法的重点。
在这里插入图片描述
在上图中,我们就可以看出我们数据的结构有线性、树形结构、图结构;三种数据结构。在我们开发程序的过程中我们就可以挑选我们需要的数据的结构以及与他相匹配的算法我们就可以创建出我们所写的成功的程序。
在这里插入图片描述
我们继续去学习数据结构的逻辑结构,当我们了解数据结构的逻辑结构之后,我们就可以去学习我们学习的重点–“算法”。
我们要想写一个成功的程序就必不可少一套成功的算法了。一个算法据有五个重要的特征:
⑴ 有穷性:一个算法应包含有限个操作步骤。即一个算法在执行若干个步骤之后应该能够结束,而且每一步都在有限时间内完成。
⑵ 确定性:算法中的每一步都必须有确切的含义,不能产生二义性。
⑶ 可行性:算法中的每一个步骤都应该是能有效地执行,并得到确定的结果。
⑷ 输入:所谓输入,是指在算法执行时,从外界取得必要的数据。计算机运行程序的目的是为了进行数据处理,在大多数情况下,这些数据需要通过输入得到。有些情况下,数据已经包含在算法中,算法执行时不需要任何数据,所以一个算法可以有零个或多个输入。
⑸ 输出:一个算法有一个或多个输出,这是算法进行数据处理后的结果。没有输出的算法是毫无意义的。
算法的这些特性可以约束程序设计人员正确地书写算法,并使之能够正确无误地执行,达到求解问题的预期效果。
我们明白了这五个特征我们才算是可以真正的入门去了解算法的精髓。接下来我们就要去了解算法的设计的要求。算法设计的好坏关乎程序的执行效率,算法的设计必须满足下列四个要求。
⑴ 正确性:正确性的含义是算法对于一切合法的输入数据都能够得出满足要求的结果,事实上要验证算法的正确性是极为困难的,因为通常情况下合法的输入数据量太大,用穷举法逐一验证是不现实的。所谓的算法正确性是指算法达到了测试要求。
⑵ 可读性:算法的可读性是指人对算法阅读理解的难易程度,可读性高的算法便于交流,有利于算法的调试和修改。通常增加算法的可读性是在书写算法时采用按缩进格式书写、分模块书写等方法可增加算法的可读性。
⑶ 健壮性:对于非法的输入数据,算法能给出相应的响应,而不是产生不可预料的后果。
⑷ 效率与低存储量需求:效率指的是算法的执行时间。对于解决同一问题的多个算法,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。存储量需求越小的算法效率越高。
在我们先后了解了算法的特征与算法设计的要求之后,我们就可以去分析算法了。解决一个问题可以有多种算法,那么该怎样判断它们的优劣呢?判断算法优劣的标准很多,这里不做深入讨论,但一个算法除了正确性必须保证外,一个主要指标是它的效率。
⑴ 算法效率的度量算法执行的时间是其对应的程序在计算机上运行所消耗的时间。程序在计算机上运行所需时间与下列因素有关:① 算法本身选用的策略;② 书写程序的语言;③ 编译产生的代码质量;④ 机器执行指令的速度;⑤ 问题的规模。所以抛开计算机软硬件相关的因素,一个程序的运行时间,仅依赖于算法的好坏和问题的规模。
⑵ 算法的时间复杂度:一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。语句执行一次实际所需的具体时间是与机器的速度、编译程序质量、输入数据等密切相关,与算法设计的好坏无关。所以,可用算法中语句的执行次数来度量一个算法的效率。
(3)算法的空间复杂度:采用空间复杂度作为算法所需存储空间的量度。
程序执行时,除了需存储本身所用的指令,常数,变量和输入数据以外,还需要一些对数据进行操作的辅助存储空间。 其中对于输入数据所占的具体存储量只取决于问题本身,与算法无关,这样只需要分析该算法在实现时所需要的辅助空间单元数就可以了。算法的执行时间和存储空间的耗费是一对矛盾体,即算法执行的高效通常是以增加存储空间为代价的,反之亦然。不过,就一般情况而言,常常以算法执行时间做为算法优劣的主要衡量指标。
这样我们才算是对算法有了初步的了解,方便我们以后去更加深入的去了解算法本身的奥秘。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值