算法精解C语言描述.png

插入封面图片,点击图片,设置图片大小

关于本书

插入「表格」

书名 算法精解C语言描述 作者 (美)Kyle Loudon 著 肖翔,陈舸 译
出版社 机械工业出版社 阅读日期 2020年6月

内容简介

《算法精解:C语言描述》是数据结构和算法领域的经典之作,十余年来,畅销不衰!全书共分为三部分:第一部分首先介绍了数据结构和算法的概念,以及使用它们的原因和意义,然后讲解了数据结构和算法中最常用的技术——指针和递归,最后还介绍了算法的分析方法,旨在为读者学习这本书打下坚实的基础;第二部分对链表、栈、队列、集合、哈希表、堆、图等常用数据结构进行了深入阐述;第三部分对排序、搜索数值计算、数据压缩、数据加密、图算法、几何算法等经典算法进行了精辟的分析和讲解。

读后感

就其中的算法分析这一章有所感悟:
现代各种优秀产品的实现几乎都离不开一个优秀的算法,而一个优秀的算法离不开它的性能,而评判一个算法的性能在算法设计过程中是很重要的。对于任何算法来说,理解每种情况是如何产生的对于分析算法来说非常重要,因为算法在不同的情况下性能差异可能很大。分析过程无非分三种情况分析:最佳情况、平均情况、最坏情况。而这本书中的一个着重点便是最坏情况分析。
理解一种算法在各种情况下有怎样的性能是非常重要的,但是通常情况下,我们更关心算法在最坏情况下的性能如何:
1、许多算法在最坏情况下执行会消耗相当长的时间。例如:在搜索元素时,数据集中根本就没有我们想查找的那个元素。我们可以想象一下,这种情况在数据库的查找应用中经常出现。
2、考虑算法在最佳情况下的性能没有太多的意义,因为很多算法在最佳情况下的表现都相同。例如:在最佳情况下,几乎所有搜索算法都可以在一次查询中找到元素,而这并不能说明到底哪种算法更好,所以分析算法的最佳情况没有太多的意义。
3、分析算法平均情况下的性能往往不是那么容易。甚至我们很难去界定哪种情况叫做“平均情况”。通常我们不能精确地获得平均情况下的算法性能,这是因为我们无法准确地控制算法的执行状态。
4、最坏情况可以告诉我们算法性能的上限。分析一个算法的最坏情况可以保证在任何情况下此算法的表现都不会比最坏情况差,而其他情况肯定比最坏情况要好。
虽然我们把最坏情况当做很多算法性能的度量,但也有例外。因为有些时候我们也会用平均情况来评判算法性能。而在这过程中算法的复杂度分析起到了很重要的作用。虽然算法的复杂度是衡量算法性能的重要参考因素,但在实际应用中,我们通常还要考虑其他更多的因素。例如:当两种算法有同样的复杂度时,就得考虑对算法影响不太大的条件和因素。如果有种算法,数据量大小的变化对它的性能没有太大的影响,那么一个复杂度大且常量很小的算法所表现出的性能可能比一个复杂度小但常量很大的算法所表现出的性能更好。其他一些值得考虑的因素包括:算法的复杂度会如何维持和发展,以及如何使一种算法在实际中更加有效地实现。一个高效的实现并不能总是影响算法的复杂度,但它可以降低常量因素的影响,从而使算法在实际应用中更加高效。而如何降低算法复杂度,降低最坏情况的复杂度便是我们提高算法性能的重要一步。