摘要: 本部分总结前面介绍的数据结构和算法,并讨论在不同的情况下如何进行选择。通用数据结构:数组、链表、树、哈希表专用数据结构:栈、队列、优先级队列排序:插入排序、希尔排序、快速排序、归并排序、堆排序图:邻接矩阵、邻接表外部存储:顺序存储、索引文件、B-树、哈希方法1 通用数据结构 若想存储真实世界中的类似人事记录、存货目录、合同表或销售业绩等数据,则只需要一般用途的数据结构。在本书中属于这种类型的结构有数组、链表、树和哈希表。他们被称之为通用的数据结构是因为它们通过关键字的值来存储并查找数据,这一点在通用数据库程序中常见到(栈等特殊结... 阅读全文
posted @ 2013-08-30 15:33 朗道二级相变 阅读(1473) 评论(2) 推荐(2) 编辑
摘要: 1 哈希表 哈希表是一种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除只需要接近常量的时间:即O(1)的时间级。实际上,这只需要几条机器指令。 对哈希表的使用者来说,这是非常迅速的事情。哈希表运算得非常快,在计算机程序中,如果需要在一秒钟内查找上千条记录,通常使用哈希表。哈希表的速度明显比树快,树的操作需要O(N)的时间级,哈希表不仅速度快,而且变成实现容易。 哈希表也有一些缺点:它是基于数组的,数组创建后难于扩展,某些哈希表被基本填... 阅读全文
posted @ 2013-08-30 10:30 朗道二级相变 阅读(1320) 评论(0) 推荐(1) 编辑
摘要: 1 树 树是一种数据结构,既能像链表那样快速的插入和删除,又能像有序数组那样快速查找,树是非常好的数据结构。本章重点介绍的是一种特殊的树————二叉树。 树是由边链结的结点组成,结点通常代表的是其他常用数据结构中存储的数据项。边的意思是从一个结点到另一个结点,在Java中就用引用来表示。计算机里面的树数据结构的拓扑图和真实的树相比是倒过来的。树的每一层结点都可以和下一层多个结点相连接,这里讨论的是二叉树,每一个结点最多有两个子节点。在更普通的树里面,结点的子结点可以多于两个,这种树叫多路树。后面的2-3-4 树可... 阅读全文
posted @ 2013-08-30 08:19 朗道二级相变 阅读(588) 评论(0) 推荐(0) 编辑