《算法导论(原书第3版)》一第2章 算法基础

简介: 本节书摘来自华章出版社《算法导论(原书第3版)》一 书中的第2章,作者:(美)Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第2章 算法基础

本章将要介绍一个贯穿本书的框架,后续的算法设计与分析都是在这个框架中进行的。这一部分内容基本上是独立的,但也有对第3章和第4章中一些内容的引用(本章也包含几个求和的式子,附录A将给出如何求和)。

首先,我们考察求解第1章中引入的排序问题的插入排序算法。我们定义一种对于已经编写过计算机程序的读者来说应该熟悉的“伪代码”,并用它来表明我们将如何说明算法。然后,在说明了插入排序算法后,我们将证明该算法能正确地排序并分析其运行时间。这种分析引入了一种记号,该记号关注时间如何随着将被排序的项数而增加。在讨论完插入排序之后,我们引入用于算法设计的分治法并使用这种方法开发一个称为归并排序的算法。最后,我们分析归并排序的运行时间。

相关文章
|
机器学习/深度学习 人工智能 算法
一文搞懂模型量化算法基础
一文搞懂模型量化算法基础
4027 0
算法导论(第三版)具体算法解析与理解
算法导论(第三版)具体算法解析与理解
|
算法 C语言
C语言算法基础-在一个单链表中值为y的结点前面插入一个值为x的结点
题目:3.4设计一个算法,在一个单链表中值为y的结点前面插入一个值为x的结点。即使值为x的新结点成为值为y的结点的前驱结点。 题目来自李云清版《数据结构》
314 5
C语言算法基础-在一个单链表中值为y的结点前面插入一个值为x的结点
|
算法 C语言
C语言算法基础-求单链表中带头结点的结点个数
题目:3.2 设计一个算法,求一个单链表中的结点个数。 来源李云清版《数据结构》
217 3
C语言算法基础-求单链表中带头结点的结点个数
|
算法 API
算法基础学习2——冒泡排序
要比较的每一对元素是相邻的,从下标为0开始,到最后一个元素,如果下标设为 j,则相邻元素下标值为 j +1,搜索到最后一个元素:j+1<a.length,而 a.length - 1 = i ;所以终止条件是 j < i
128 0
算法基础学习2——冒泡排序
|
机器学习/深度学习 算法 Java
算法基础学习1——时间复杂度和空间复杂度
算法基础学习1——时间复杂度和空间复杂度
124 0
算法基础学习1——时间复杂度和空间复杂度
|
搜索推荐 Java
Java基础数组-冒泡排序算法
Java基础数组-冒泡排序算法
Java基础数组-冒泡排序算法
|
存储 编解码 算法
【算法基础】希尔排序解析
希尔排序的基本思想是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。
116 0
|
编解码 算法 网络协议
【算法基础】冒泡排序解析
在我们数组排序中,每一个数组元素根据大小比对,小的元素不断向前移动,如同气泡在冒出一样,我们称这种排序方法为冒泡排序。
167 0
|
机器学习/深度学习 编解码 算法
【算法基础】归并排序解析
归并排序是建立在归并操作上的一种有效,稳定的排序算法,它是采用分治法的一个非常典型的应用。将待排序数组分为两条线逐级拆分,将子序列进行排序,然后沿两条线逐级合并,得到完全有序序列。这种通过递归,层层合并的方法,称为归并。
167 0
下一篇
无影云桌面