本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn)。另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体位置),在虚拟环境中能很好的工作 ...
算法导论 学习记录目录 快速排序,对于n个数的输入数组,最坏情况运行时间: n 期望运行时间: nlgn 就地排序 Sort in place 。 数组A p..r 会被分为两个子数组A p..q 和A q ..r ,其中A p..q 的元素都不大于A q ,A q ..r 都不小于A q 。 如何划分子数组对运行时间的有很大影响,最坏的情况为n个数的数组划分为一个n 的数组和一个 元素的数组 ...
2013-09-28 18:21 14 3637 推荐指数:
本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn)。另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体位置),在虚拟环境中能很好的工作 ...
1. 算法描述 快速排序(quick-sort)与前面介绍的归并排序(merge-sort)(见算法基础——算法导论(1))一样,使用了分治思想。下面是对一个一般的子数组A[p~r]进行快速排序的分治步骤: ① 分解:数组A[p~r]被划分为两个子数组A[p~q]和A[q+1 ...
7.1-1 蓝色部分代表不大于pivot,红色部分表示大于pivot 13 19 9 5 12 8 7 4 21 2 6 11 13 19 9 5 12 8 7 4 21 2 6 11 13 19 9 5 12 8 7 4 21 2 6 11 9 13 19 ...
前言 最近学习了算法导论上的快速排序部分,有不少体会。 今天就来分享一下。在此欢迎大家批评指正文中的错误。 快速排序 正文 1.快速排序的优点 说起快速排序,它的名字就显现出快排最大的优点————快。到底有多快呢?咱们用数据说话: 综合一般情况来说,快排确实有(亿点快)。特别是对较 ...
《算法导论》学习记录目录 欢迎指出其中的错误和交流。 关于堆排序的具体介绍和C代码实现见该链接。 算导关于堆排序的练习主要是一些证明,可以帮助理解堆的特征。部分练习是图示过程,这些练习认真用笔过一次会很有收获。 1.在高度为h的堆中,最多和最少的元素个数是多少? 最多:底层全 ...
7–1. 字典方法。哪个字典方法可以用来把两个字典合并到一起? 解答:使用update方法 7–2. 字典的键。我们知道字典的值可以是任意的Python 对象,那字典的键又如何呢?请试着将除数字和 ...
本篇内容: 快速排序 快速排序 算法思想: 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行,以此达到整个数据变成有序序列。 代码实现:(递归 ...
第七章 快速排序 主要分为两个子算法,PARTITION(A, p, r)以A[r]为基准对数组进行一个划分,比A[r]小的放在左边,比A[r]大的放在右边。QUICKSORT(A, p, r)是快速排序的子程序,调用划分程序对数组进行划分,然后递归地调用QUICKSORT(A, p, r ...