数据结构-算法概念与程序设计

目录

一、算法

二、算法设计的要求

三、如何去衡量不同算法之间的优劣


一、算法

概念:算法是对于特定问题求解步骤的一种描述,是指令的有限序列,其中每一条质量表示一个或者多种操作,具有以下特性:

(1)有穷性:一个算法必须总是在执行有穷步之后结束,并且每一步都在有穷时间内完成

(2)确定性:算法中的每一条指令必须有确切的含义,在任何条件下,算法只有唯一的一条执行路径,对于相同的输入只能得到相同的输出

(3)可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现

(4)输入:一个算法必须有0或者多个输入,这些输入取自某个特定的对象合集

(5)输出:一个算法有一个或者多个输出,这些输出同输入有着某些特定关系

二、算法设计的要求

通常设计一个好的算法应该达到以下目标

(1)正确性

a、程序不包含语法错误

b、程序对于几组输入的数据能够得出满足规格说明要求

c、程序对于具有刁难性的输入数据能够得出满足规格要求的结果

d、程序对于一切合法的输入数据都能够给出满足规格要求的结果

(2)可读性

程序主要是为了人的阅读与交流,其次才是机器执行,可读性好有助于人对于算法的理解,晦涩难懂的程序容易隐藏错误,难以调试和修改

(3)健壮性

对于输入数据非法时,算法也可以适当的给出饭应或者进行处理,而不会产生莫名奇妙的输出结果

(4)效率与低存储量需求

效率指的是算法执行的时间,执行时间短的程序效率高

存储量需求是指算法在执行过程中的最大存储空间

三、如何去衡量不同算法之间的优劣

主要从算法的两个维度进行衡量

1、时间维度:执行当前算法所消耗的时间,通常用时间复杂度来描述(程序开始运行到运行结束所需要的时间)

2、空间维度:执行当前算法所需要占据多少内存空间,通常用空间复杂度来描述

算法执行时间的度量方法:

1、时候统计法,很多计算机内部都具有计时功能,不同的而算法程序可以通过一组或者多组相同的统计数据以分辨优劣,但是这中办法有两中弊端:1、必须先运行依赖算法编制的程序。2、所得的时间的统计量依赖于计算机的硬件软件等环境因素,容易掩盖算法本身的优劣

2、事前分析估算法   一个用高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素
1)依据的算法选用何种策略

2)问题的规模

3)书写程序的语言,对于同一个算法,实现语言的级别越高,执行效率越高

4)编译程序所产生的机器代码的质量

你可能感兴趣的:(数据结构)