读《编程珠玑》 (二)

第三章 数据结构

程序的结构很大程度上取决于数据结构的表达,通过重新组织数据结构很多时候可以改变程度的大小和效率,增强程序的可维护性。

程序员在节省空间方面无计可施时,将自己从代码中解脱出来, 退回起点并集中心力研究数据,常常能有奇效。表示法是编程的精华。

下面是退回起点进行思考时的几条原则:

  • 使用数组重新编写重复代码。冗长的相似代码常常可以使用最简单的数据结构—— 数组来更好地表述。

  • 封装复杂结构。当需要非常复杂的数据结构时,使用抽象术语进行定义, 并将操作表示为类。

  • 尽可能使用高级工具。超文本,名字-值对,电子表格,数据库, 编程语言等都是特定问题领域中的强大的工具。

  • 从数据得出程序的结构。在动手编写代码之前,优秀的程序员会彻底理解输入, 输出和中间数据结构,并围绕这些结构创建程序。

编程有时候不能靠第一直觉来进行,可能需要更多的思考,对于各方面如数据结构,算法等的仔细定义。

 

第四章 编写正确的程序

前面三章中,讨论了问题的定义,算法设计和数据结构的选择,在完成这些工作后,需要编写正确的程序来达到我们的目的。

二分查找是一个非常普通的算法,然而正确的实现它并不如看上去那么简单。Knuth在书《Sorting and Searching》中就曾指出,尽管第一个二分查找程序于1946年就公布了,但第一个没有bug的二分查找程序在1962年才出现。其基本的伪代码如下:

l=0;u=n-1
loop {mustbe(l,u)}
if l>u p=-1;break m=(l+u)/2 case x[m]<t: l=m+1
     x[m]=t: p=m;break x[m]>t: u=m-1

 

posted @ 2015-01-29 21:59  喝了粥的阿飞  阅读(172)  评论(0编辑  收藏  举报