码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法的关系

时间:2015-08-19 00:46:35      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

离开算法谈数据结构是无法完全理解数据结构的。

算法定义

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法定义中,提到了指令,指令能被人或机器等计算装置执行。它可以是计算机指令,也可以是我们平时的语言文字。为了解决某个或某类问题,需要把指令表示成一定的操作序列,操作序列包括一组操作,每一个操作都完成特定的功能,这就是算法。

算法的特定

算法具有五个基本特性:输入,输出,有穷性,确定性和可行性。

输入输出:算法具有零个或多个输入,至少有一个或多个输出。有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。确定性:算法的每一步骤都具有确定的含义,不会出现二义性。可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。

算法设计的要求

正确性:算法的正确性是指算法至少应该具有输入,输出和加工处理无岐义性,能正确反映问题的需求,能够得到问题的正确答案。可读性:算法设计的另一目的是为了便于阅读,理解和交流。健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果。 时间效率高和存储量低:时间效率指的是算法的执行时间,对于同一个问题,如果有多个算法能够解决,执行时间短的算法效率高,执行时间长的效率低。存储量需求指的是算法在执行过程中需要的最大存储空间,主要指算法程序运行时所占用的内存或外部硬盘存储空间。最好用最少的存储空间,花最少的时间,办成同样的事就是好的算法。

算法效率的度量方法

事后统计方法:这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。这种方法有很大缺陷:

  • 必须依据算法事先编制好的程序,这通常需要花费大量的时间和精力。

  • 时间的比较依赖计算机硬件和软件等环境因素,有时会掩盖算法本身的优劣。

  • 算法的测试数据设计困难,并且程序的运行时间往往还与测试数据的规模有很大关系,效率高的算法在小的测试数据面前往往得不到体现。

基于事后统计方法有这样那样的缺陷,我们考虑不予采纳。

事前分析估算方法:在计算机程序编制前,依据统计方法对算法进行估算。经过分析发现,一个用高级程序语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:

  • 算法采用的策略,方法。

  • 编译产生的代码质量。

  • 问题的输入规模。

  • 机器执行指令的速度。

第1条当然是算法好坏的根本,第2条要由软件来支持,第4条要看硬件性能。也就是说,抛开这些与计算机硬件,软件有关的因素,一个程序的运行时间,依赖于算法的好坏和问题的输入规模。所谓问题输入规模是指输入量的多少。

未完...................................................................


数据结构与算法的关系

标签:

原文地址:http://my.oschina.net/fhd/blog/494218

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!