自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (3)
  • 收藏
  • 关注

原创 算法导论 — 思考题 7-1 Hoare划分的正确性

(Hoare划分的正确性)本章中的PARTITION算法并不是其最初的版本。下面给出的是最早由C. R. Hoare所设计的划分算法:    a. 试说明HOARE-PARTITION在数组A = {13, 19, 9, 5, 12, 8, 7, 4, 11, 2, 6, 21}上的操作过程,并说明在每一次执行第4~14行while循环时数组元素的值和辅助变量的值。  后续的三个问题要求读者...

2018-12-25 22:42:40 865

原创 算法导论 — 7.4 快速排序分析

笔记本节给出快速排序运行时间的详细分析。  (1) 最坏情况运行时间  假设T(n)T(n)T(n)是最坏情况下QUICKSORT的运行时间,那么T(n)T(n)T(n)满足以下递归式    因为调用PARTITION生成的2个子数组的长度加起来为n−1n-1n−1,因此上式中参数qqq的变化范围是0 n−10 ~ n-10 n−1。我们用代入法来证明T(n)=Θ(n...

2018-12-25 11:36:10 1321

原创 算法导论 — 7.3 快速排序的随机化版本

笔记7.2节提到,快速排序的平均情况时间复杂度为Θ(nlgn)Θ(n{\rm lg}n)Θ(nlgn)。然而实际应用中,输入数据有可能并不是完全随机排列的。比如,练习7.2-4描述的应用,需要排序的绝大多数输入数组都已经是基本有序的,在这种应用中,快速排序的效率总是十分低下。  为了避免在某些应用中,由于输入数据并不是完全随机排列的,它们可能具备或大致上具备某种规律性,从而导致快速排序总是效率...

2018-12-24 13:13:07 1351

原创 算法导论 — 7.2 快速排序的性能

笔记本节只给出快速排序运行时间的简单分析。快速排序的运行时间取决于PARTITION划分是否平衡,而划分的平衡与否又取决于用于划分的主元的选择。  1. 最坏情况时间复杂度  对于一个含nnn个元素的数组,PARTITION划分的最坏情况为:划分产生的两个子数组的大小分别为n−1n-1n−1和000时。假设快速排序每一次递归调用PARTITION都产生了最坏情况划分,那么算法的运行时间T(n...

2018-12-14 23:08:04 1297

原创 算法导论 — 7.1 快速排序的描述

笔记快速排序采用了分治的思想。对于一个数组A[p..r]A[p..r]A[p..r],调用一个PARTITION过程,将它划分为两部分A[p..q−1]A[p..q-1]A[p..q−1]和A[q+1..r]A[q+1..r]A[q+1..r],使得A[p..q−1]A[p..q-1]A[p..q−1]中的每一个元素都不大于A[q]A[q]A[q],而A[q+1..r]A[q+1..r]A[q+...

2018-12-14 22:15:46 724

原创 算法导论 — 思考题6-3 Young氏矩阵

(Young氏矩阵)在一个m×nm×nm×n的Young氏矩阵(Young tableau)中,每一行的数据都是从左到右排序,每一列的数据都是从上到下排序的。Young氏矩阵中也会存在一些值为∞∞∞的数据项,表示那些不存在的元素。因此,Young氏矩阵可以用来存储r≤mnr ≤ mnr≤mn个有限的数。  a. 画出一个包含元素为{9, 16, 3, 2, 4, 8, 5, 14, 12}的4×...

2018-12-09 01:58:02 787

原创 算法导论 — 思考题6-2 对d叉堆的分析

(对ddd叉堆的分析)ddd叉堆与二叉堆很类似,但(一个可能的例外是)其中的每个非叶结点有ddd个孩子,而不是仅仅222个。  a. 如何在一个数组中表示一个ddd叉堆?  b. 包含nnn个元素的ddd叉堆的高度是多少?请用nnn和ddd表示。  c. 请给出EXTRACT-MAX在ddd叉最大堆上的一个有效实现,并用ddd和nnn表示出它的时间复杂度。  d. 给出INSERT在ddd...

2018-12-08 01:40:54 1685

原创 算法导论 — 思考题6-1 用插入的方法建堆

(用插入的方法建堆)我们们可以通过反复调用MAX-HEAP-INSERT实现向一个堆中插入元素,考虑BUILD-MAX-HEAP的如下实现方式:    a. 当输入数据相同的时候,BUILD-MAX-HEAP和BUILD-MAX-HEAP’生成的堆是否总是一样?如果是,请证明;否则,请举出一个反例。  b. 证明:在最坏情况下,调用BUILD-MAX-HEAP’建立一个包含nnn个元素的堆的...

2018-12-06 23:16:01 1000 1

原创 算法导论 — 6.5 优先队列

笔记本节介绍堆的另外一种重要应用:优先队列。一个最大堆构成最大优先队列,同样一个最小堆构成最小优先队列。本节主要探讨最大优先队列。  一般来说,优先队列中的每个元素都有一个关键字(key)。关键字决定了一个元素在优先队列中的位置。一个最大优先队列支持以下操作:  • INSERT(S, x):把元素xxx插入最大优先队列SSS中。  • MAXIMUM(S):返回SSS中具有最大关键字的元...

2018-12-05 00:40:55 1353 5

原创 算法导论 — 6.4 堆排序算法

笔记堆排序算法一开始调用BUILD-MAX-HEAP将输入数组A[1..n]A[1..n]A[1..n]构建成最大堆。此时,数组中的最大元素在根结点A[1]A[1]A[1],因此通过将A[1]A[1]A[1]与A[n]A[n]A[n]交换,可以将A[1]A[1]A[1]放置在排序后的正确位置。由于根结点换了一个新的元素,现在的根结点有可能不满足堆的性质,因此需要调用MAX-HEAPIFY来维护堆...

2018-12-03 23:09:39 1509

原创 算法导论 — 6.3 建堆

笔记建堆的过程实际上是自底向上地对所有非叶结点调用MAX-HEAPIFY的过程。由于叶结点没有孩子,所以每一个叶结点都可以看是只包含一个元素的最大堆。而自底向上地调用MAX-HEAPIFY,是要保证在处理任意一个结点的时候,它的子树已经满足了最大堆性质,这是调用MAX-HEAPIFY的必要条件。    BUILD-MAX-HEAP的运行时间为O(n)O(n)O(n)。这一结果的推导过程可以参...

2018-12-03 22:41:16 1065 1

原创 算法导论 — 6.2 维护堆的性质

笔记本节主要考虑如何保持堆(最大堆)的性质。给定最大堆AAA中的一个元素iii,它有可能不符合最大堆的性质,即A[i]A[i]A[i]有可能小于它的孩子,但是它的两棵子树已经满足了最大堆的性质。我们通过一个MAX-HEAPIFY过程来使得以A[i]A[i]A[i]为根的子树满足最大堆性质,MAX-HEAPIFY是通过让A[i]A[i]A[i]在最大堆中“逐层下降”来达成这一目标的。    简...

2018-12-03 22:08:48 1938

原创 算法导论 — 6.1 堆

笔记本节主要给出(二叉)堆的定义。堆是一种用数组保存的完全二叉树。完全二叉树的意思是,除了树的最底层,其他层都完全充满的。树中的元素按照从上到下、从左到右的顺序保存在数组中。下图给出了堆的一个例子,左图是完全二叉树的形式,右图是堆在数组中的表示。    如果用AAA表示堆所在的数组,那么A.lengthA.lengthA.length表示数组的容量,即数组最多可容纳的元素的个数;A.heap...

2018-12-03 21:50:36 1293

rtlinux-3.2-pre3.tar.bz2

rtlinux-3.2-pre3源代码 实时Linux

2010-09-09

libminigui-1.3.3

minigui-1.3.3版本的函数库源代码。

2009-08-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除