考察数据结构(An Extensive Examination of Data Structures)

这是我在MSDN上看到一篇大块头文章,详细地介绍了.Net Frameword中的内置数据结构Array,ArrayList,Quene,Stack,HashTable,以及为提供的二叉树,图和集合等数据结构。我觉得非常好。记得以前CSDN上好象有中文翻译,不过找不到了。

反正我也希望看看英文原文,一方面锻炼自己的阅读水平,又能获得数据结构的知识,一举两得。但也希望更多的朋友能看到。所以我也尝试着将文章翻译过来。无奈自己的英文水平太差,光是本文的翻译就不知怎么翻译好,那个extensive,虽知其意,却无法perfect地表述出来。

所以我只有采取折衷的办法,就是不按字按句翻译,而是用自己的语言将文章的大体内容和思想表达出来就可以了。这样也省得挨骂。

不过我已经作好挨骂的准备了。


下面是文章的结构,共分为六大部分:

第一部分:首先介绍数据结构在算法设计中的重要性.决定数据结构的优劣在于其性能.我们将经过严格分

析数据结构的各种性能.此部分还将介绍.Net Frameword下两种常用的数据机构:Array 和ArrayList.

我们将考察其结构的操作方式及其效率.

第二部分:我们将继续从更多细节上分析ArrayList结构,同时还将介绍Queue类和Stack类.和ArrayList一

样,Queue和Stack存放的都是一组连续的数据集合,都属于.Net Framework基类库.与ArrayList不同的是

,Stack和Queue只能以预先规定的序列顺序读取其数据(先进先出和先进后出),而ArrayList可以任意获取

数据项.我们将通过示例程序来考察Queue,Stack,并通过扩展ArrayList类来实现它们.之后,我们还要分析

哈希表HashTable,它象ArrayList一样可以直接访问数据,不同的是它以key(字符串)为索引.

ArrayList对数据直接读取和存储是一种理想的数据结构,同时,它也是支持数据搜索的候选方案.在第三部

分,我们将考察二叉树结构,对于数据搜索而言,它比ArrayList更加有效. .Net Framework并不包含此种内

置数据结构,因此需要我们自己创建.

二叉树搜索的效率受制于插入到树中的数据的顺序.如果我们插入的是有序或近似有序的数据,实际上,它

的效率不如ArrayList.为了将这两种的优势结合起来,在第四部分,我门将考察一种有趣的随机数据结构

--SkipList. SkipList既保留了二叉树搜索的高效率,同时输入数据的顺序对其效率影响甚微.

第五部分我们将注意力转向通常用来表现图形的数据结构.图(graph)是众多节点以及节点之间边的集合.举

例来说,地图就可以图的形式来表现.城市是节点,公路则是连接节点之间的边.许多现实问题都可以抽象成

图的形式,因此,图也是我们经常要用到的数据结构.

最后,第六部分我们将谈到reprisent sets(表示集?)和disjoint sets(非关联集,即交集为空?)集合是一种无序数据的集中.非关联集是指它和另外一个集合没有共同的元素.我们在程序编写时会经常用到集合和非关联集.我们将在这一部分中详细描述它.

下面我把每部分的英文链接提供出来,要知道翻译这篇大部头文章,可要花很多时间,现在我是雄心壮志,也不知道会不会夭折。同时也希望其他人也能参与,或许更能体现博客的精神。

Part 1: An Introduction to Data Structures

Part 2: The Queue, Stack, and Hashtable

Part 3: Binary Trees and BSTs

Part 4: Building a Better Binary Search Tree

Part 5: From Trees to Graphs

Part 6: Efficiently Representing Sets

我打算明天能把第一部分翻译出来,努力啊!!

btw:国内似乎很少有这种大部头的好文章啊。MSDN上的好东东真不少,可惜多数是英文。也不知道这篇文章是否已被MSDN翻译成中文。我也不管了,权当练笔吧。

原文地址:https://www.cnblogs.com/wayfarer/p/5523.html