• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

软件工程思想(5)

发布: 2008-7-23 13:17 | 作者: 网络转载 | 来源: Sawin系统分析之窗 | 查看: 43次 | 进入领测软件测试网论坛讨论

领测软件测试网

"sDi5l7B 软件测试技术网站Z%P:Us%P6DE

5.3  数据结构与算法设计软件测试技术网站6n?1ay7vyAe

软件测试技术网站3YL/g:Rf4E/F

 

h5|/L0eM h

\5LM*p6?ge学会设计数据结构与算法,可以让我们编写出高效率的程序。也许有人要问,在计算机速度日新月异的今天,为什么还需要高效率的程序?软件测试技术网站+{+`q4HnQ8X o1h

软件测试技术网站:\#Q(Ffg#Ya

因为我们的雄心与能力是一起增长的,技术进步最快也快不过人们欲望的增长。计算速度和存储容量上的革新仅仅提供了处理更复杂问题的有效工具,所以高效率的程序永远不会过时。

`D7D$J | Jb:C9Z6IC 软件测试技术网站+H9R5`%hKzL R&p

设计高效率的程序是基于良好的数据结构与算法,而不是基于编程小技巧。大多数计算机科学系在设置课程时,都重视学习基本的软件工程原理,以及数据结构与算法设计。

3eEoBAMD$|.I"r 软件测试技术网站~k\l%ks/]&Ei

一般说来,数据结构与算法就是一类数据的表示及其相关的操作(这里算法不是指数值计算的算法)。从数据表示的观点来看,存储在数组中的一个有序整数表也是一种数据结构。算法是指对数据结构施加的一些操作,例如对一个线性表进行检索、插入、删除等操作。一个算法如果能在所要求的资源限制(Resource Constraints)范围内将问题解决好,则称这个算法是有效率(Efficient)的。例如一个资源限制可能是“用于存储数据的内存有限”,或者“允许执行每个子任务所需的时间有限”。一个算法如果比其它已知算法所需要的资源都少,这个算法也被称为是有效率的。算法的代价(Cost)是指消耗的资源量。一般说来,代价是由一个关键资源例如时间或空间来评估的。软件测试技术网站/N:l*\7UW0Q

软件测试技术网站\4n+~KF+ux

毋庸置疑,人们编写程序是为了解决问题。只有通过预先分析问题来确定必须达到的性能目标,才有希望挑选出正确的数据结构。有相当多的程序员忽视了这一分析过程,而直接选用某一个他们习惯使用的,但是与问题不相称的数据结构,结果设计出一个低效率的程序。如果使用简单的设计就能够达到性能目标时,选用复杂的数据结构也是没有道理的。

#OG){:S O&}3Ors

4F[7zg;oc7F,X5J人们对常用的数据结构与算法的研究已经相当透彻,可以归纳出一些设计原则:软件测试技术网站v-q,c+D5l*O

软件测试技术网站Q z)H;vgjXX

(1)每一种数据结构与算法都有其时间、空间的开销和收益。当面临一个新的设计问题时,设计者要彻底地掌握怎样权衡时空开销和算法有效性的方法。这就需要懂得算法分析的原理,而且还需要了解所使用的物理介质的特性(例如,数据存储在磁盘上与存储在内存中,就有不同的考虑)。软件测试技术网站oDa(x ?:Q)K_q

软件测试技术网站`*\KL