
数据结构与算法分析-C语言描述
文章平均质量分 90
矢之炽~
一遇风云便化龙
展开
-
第4章 树
对于大量的输入数据,链表的线性访问时间太慢,不宜使用。本章介绍一种简单的数据结构,其大部分操作的运行时间平均为。我们还会简述对这种数据结构在概念上的简单修改,它保证了在最坏情形下的上述时间界。此外,还讨论了第二种修改,对于长的指令序列它对每种操作的运行时间基本上是。 本章涉及的这种数据结构叫作二叉查找树(binary search tree)。在计算机科学中树(tree)是非常有用的抽象概念,因此,我们将讨论树在其他更一般的应用中的使用。 在这一章,我们将: 树(t原创 2024-01-17 00:09:44 · 966 阅读 · 0 评论 -
第5章 散列
本章讨论散列表(hashtable)ADT,不过它只支持二叉查找树所允许的一部分操作。散列表的实现常常叫作散列(hashing)。散列是一种以常数平均时间执行插入、删除和查找的技术。但是,那些需要元素间任何排序信息的操作将不会得到有效的支持。因此,诸如FindMin、FindMax以及以线性时间将排过序的整个表进行打印的操作都是散列所不支持的。原创 2023-12-25 00:38:02 · 957 阅读 · 0 评论 -
第7章 排序
如果最初的输入与前面一样,那么下面的图表示当前的状态。我们暂时假设所有的元素互异,后面将着重考虑出现重复元素时应该怎么办。作为一种限制性的情形,如果所有的元素都相同,那么我们的算法必须做相应的工作。可是奇怪的是,此时算法却特别容易出错。原创 2023-12-22 01:05:51 · 932 阅读 · 0 评论 -
第7章 排序
在这一章,我们讨论数组元素的排序问题。为简单起见,假设在我们的例子中数组只包含整数,虽然更复杂的结构显然也是可能的。对于本章的大部分内容,我们还假设整个排序工作能够在主存中完成,因此,元素的个数相对来说比较小(小于)。当然,不能在主存中完成而必须在磁盘或磁带上完成的排序也相当重要。这种类型的排序叫作外部排序(external sorting),将在本章末尾讨论外部排序。 我们对内部排序的考察将指出: 本章的其余部分将描述和分析各种排序算法。这些算法包含一些有趣的、重要的代码优化和原创 2023-12-17 22:52:44 · 1201 阅读 · 0 评论 -
第3章 表、栈和队列
像栈一样,队列(queue)也是表。然而,使用队列时插入在一端进行而删除则在另一端进行。原创 2023-12-04 21:39:57 · 882 阅读 · 0 评论 -
第3章 表、栈和队列
例如表、集合、图以及它们的操作,它们都可以看作抽象数据类型,就像整数、实数和布尔量是数据类型一样。整数、实数及布尔量有与它们相关的操作,而抽象数据类型也有与之相关的操作。原创 2023-11-28 21:05:40 · 1063 阅读 · 0 评论 -
第1章 引论
在许多问题当中,一个重要的观念是:写出一个可以工作的程序并不够。如果这个程序在巨大的数据集上运行,那么运行时间就变成了重要的问题。我们将在本书中看到对于大量的输入如何估计程序的运行时间,尤其是如何在尚未具体编码的情况下比较两个程序的运行时间。我们还将看到彻底改进程序速度以及确定程序瓶颈的方法。这些方法将使我们能够找到需要大力优化的那些代码段。原创 2023-10-25 00:36:08 · 581 阅读 · 0 评论 -
第3章 表、栈和队列
最后插入的元素可以通过使用Top例程在执行Pop之前进行检查。对空栈进行的Pop或Top一般被认为是栈ADT的错误。另一方面,当运行Push时空间用尽是一个实现错误,但不是ADT错误。原创 2023-12-04 20:40:02 · 1335 阅读 · 0 评论 -
第2章 算法分析
(1)若存在正常数和使得当时,则记为,大O记法的增长率小于等于(的增长率是的上界(upper bound)(2)若存在正常数和使得当时,则记为的增长率大于等于(的增长率是的下界(lower bound)(3)当且仅当且时,的增长率等于(的增长率(4)若且,则,小o记法的增长率小于(的增长率注:根据上下文等选择最好的答案2.法则:(1)若且,则(a)(b)(2)若是一个次多项式,则(3)对任意常数,对数增长得非常缓慢。原创 2022-11-09 22:25:50 · 727 阅读 · 1 评论