风也温柔

计算机科学知识库

java数据结构 Java算法与数据结构:快速排序,原理及代码详细讲解

  关于计算机教育规范,最有权威、影响最大的莫过于 ACM 与 IEEE-CS 联合制订的 。比如, 1991()就曾对我国高校的计算机教育产生深刻的影响。 正在制订中的 (后改称 )认为,随着近年来计算概念的快速发展,计算学科已经发展成为一个内涵繁杂的综合性学科,至少可以划分为计算机工程(CE)、计算机科学(CS)、信息系统(IS)、信息技术(IT)和软件工程(SE)等五个领域,而且不同领域的人才所应具备的知识结构与能力侧重也不尽相同。尽管如此,从目前已经完成的部分来看java数据结构 Java算法与数据结构:快速排序,原理及代码详细讲解,数据结构与算法在各领域的知识体系中仍然占据着重要的位置。比如在 CE 分卷(草案)中, ntals共 39 个核心学时,其中 and 占 8 个学时, Data 占 13 个学时;在 CS 分卷(正式稿)中, 共 38 个核心学时,其中 占 6 个学时, Data 占 14 个学时。

  为什么数据结构与算法长期以来会一直受到如此重视?数据结构和算法是一对孪生兄弟,数据结构研究的问题包括数据在计算机中存储、组织、传递和转换的过程及方法,这些也是构成与支撑算法的基础。我们在编写计算机程序来解决应用问题时,最终都要归结并落实到这两个问题上。正因为此, N. Wirth 早在上世纪 70 年代就曾指出“程序 = 数据结构 + 算法”。近年来,随着面向对象技术的广泛应用,从数据结构的定义、分类、组成,到设计、实现与分析的模式与方法都有了长足的发展,现代数据结构更加注重和强调数据结构的整体性、通用性、复用性、简洁性和安全性。为遵循上述原则,本书选择 Java 作为描述语言,因为相对于其它语言,Java 语言比较完整、彻底地体现了面向对象的设计思想java数据结构,这也是目前国际上同行们的一个主要取向。不过,关于 Java语言本身的介绍与交待,本书并未花费多少笔墨,而是直接假定读者已经熟练掌握了该语言。这既能缩减本书篇幅,也符合此领域教学今后的规范。比如, 的 CS 分卷将 Data 课程编号为 CS103,并明确指出该课程是 (CS101)和 - (CS102)的后续课程。

  在内容选取、剪裁与体例结构上,作者力图突破现成的模式。这里并未对各种数据结构面面俱到,而是通过分类和讲解典型结构,力图使读者形成对数据结构的宏观认识;结合各部分的具体内容,书中都穿插了大量的问题,把更多的思考空间留给读者。根据内容侧重,本书分为以下具体部分。第一章是全书的基础,重点在于介绍算法与数据结构的关系java数据结构,以及算法时间、空间复杂度的概念及其度量方法。第二至四章覆盖了基本的数据结构,既有传统的栈与队列,也有更为抽象和通用的向量和列表。面向对象技术在现代数据结构理论中的重要地位在此得到体现,我们利用接口实现数据结构的封装,抽象出位置的概念,在向量和列表的基础上定义并实现序列结构,引入迭代器概念并针对上述结构具体实现。通过结合数组与链表结构的优点,第四章自然地导出了树结构的概念、实现及算法。前言xi / xi第五、六和七章介绍了若干高级数据结构。通过在一般性队列中引入优先级概念,导出了优先队列结构;面向实际问题中的查找需求,导出了映射和词典结构;针对全序集的查找问题,引入了查找数结构,并结合 AVL 树、伸展树和 B-树的实例介绍了平衡查找树结构的原理及其实现。面向对象的思想在这里继续得到贯彻,普遍采用了抽象、封装及继承等技术。

  这一部分的侧重点逐渐转向算法,并结合具体问题介绍其应用与实现,包括堆结构的生成及调整算法、 编码树算法、散列算法以及二路或多路平衡查找树的生成、插入、删除算法。在这三章中,读者也将对算法复杂度的各种分析方法有所了解。第八、九和十章的论述重点完全转向算法。第八章对此前各章中陆续介绍过的排序算法作了归纳与分类,着重介绍了归并排序算法与快速排序算法,并给出了此类算法的复杂度下界。结合串结构的应用,第九章着重讨论了串匹配问题,从蛮力算法出发,采用不同的启发式加速策略,分别介绍了 KMP 算法及 BM 算法。关于图结构,第十章将重点放在相关算法上,并力图使初学者从各种图算法中梳理出清晰的脉络。为此,这里尝试通过一条主线⎯⎯遍历⎯⎯将各种算法串接起来。在这里,面向对象技术的魅力再次得以展现:基于统一的图遍历算法模版,分别实现了深度优先、广度优先和最佳优先三大类遍历算法。实际上,这三类算法本身仍然以模版形式实现,包括边分类、可达分量、连通分量、最短路径以及最小生成树在内的各种具体算法,都进而基于这三个模版分别得到了实现。书中涉及的所有代码,都符合 J2SDK-1.4.1 规范,并构成一个名为 dsa(Data &)的包;所有类之间的扩展、继承关系,都在书后的“DSA 类关系图”部分统一介绍。

  为获取本书中的代码及相关教学资料,欢迎访问: ~deng/ds/dsaj/。从本书的筹划、撰写、审订到定稿发行,其间跨越三个年头,在此漫长的过程中,我的父母和妻子给了我巨大的支持,就这个意义而言,他们也是本书的完成者。年幼的女儿总是以她独有的方式,不时将我从写作和调试的苦海中解救出来,她让我体会了禁用 按钮的妙用(尽管除了拔除接头外我还没有找到更好的办法,使得在她恶作剧地按下 Reset 按钮后依然能够继续写作)。我的确需要感谢她,她让我养成了及时备份的良好习惯,更使我意识到在离开电脑后自己依然能够而且更好地思考。经过在清华大学的多年执教,我日益深刻地体会到教育的伟大和神圣,是我的同事、我的学生使我懂得了如何忘却劳动的艰辛,并从教育的过程中获得乐趣。我还要特别感谢机械工业出版社的温莉芳女士,在我一次次地推迟交稿时,她表现出的耐心与理解都令我既钦佩又惭愧,正是这非凡的宽容激励着我不断追求完美。虽反复斟酌,在本书即将出版之际,内心依然惶恐。“丑媳妇终要见公婆”,恳请读者批评指正

  文章来源:https://blog.csdn.net/qq_54508596/article/details/126148099