问答题

[说明]
快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的3个步骤如下。
1.分解:选择一个枢轴(pivot)元素划分数组。将数组A[p..r]划分为两个子数组(可能为空)A[p..q-1]和A[q+1..r],使得A[q]大于等于A[p..q-1]中的每个元素,小于A[q+1..r]中的每个元素。q的值在划分过程中计算。
2.递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。
3.合并:快速排序在原地排序,故无需合并操作。
1. [问题1]
下面是快速排序的伪代码,请将空缺处(1)~(3)的内容填写完整。伪代码中的主要变量说明如下。
A:待排序数组
p,r:数组元素下标,从p到r
q:划分的位置
x:枢轴元素
i:整型变量,用于描述数组下标。下标小于或等于i的元素的值,小于或等于枢轴元素的值
j:循环控制变量,表示数组元素下标

【参考答案】

[问题3]
由于随机化的快速排序的划分调用了传统的快速排序算法的PARTITION操作,而传统的划分每次以数组......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
[问题3] 这也是一道要求读者从题干说明信息中识别数据流,以及掌握局部数据存储的隐蔽性原则的综合分析题。本题的解答思路如下。 ①根据DFD父图与子图的平衡原则和输入 输出平衡原则,通过比对图2-22和图2-23中所有输入 输出数据流可知,如图2-22所示中数据流“查询请求信息”在如图2-23所示中包含了“查询读者请求信息”和“查询图书请求信息”两条子数据流;如图2-22所示中数据流“非法查询请求信息”在如图2-23所示中包含了“非法查询读者请求信息”和“非法查询图书请求信息”两条子数据流。 ②由题干给出的说明信息可知,读者基本信息存储在读者文件中,而读者借阅图书的信息存储在借书文件中。再由题干给出的关键信息“读者信息查询可以得到读者的基本信息及读者借阅图书的情况”,并结合[问题2]的分析过程可知,在如图2-23所示中加工“2.1读者信息查询”应从数据存储“借书文件”中获取该读者借阅图书的情况。因此在如图2-23所示中补充的一条数据流起点是“借书文件”,终点是“2.1读者信息查询”,数据流名称是“读者借阅图书情况”。 ③同理,由题干给出的说明信息可知,读者借阅图书的信息存储在借书文件中,而图书的基本信息存储在图书目录文件中。再由题干给出的关键信息“图书信息查询可以得到图书基本信息和图书的借出情况”可知,在如图2-23所示中加工“2.2图书信息查询”应从数据存储“图书目录文件”中获取所查询图书的基本信息,从数据存储“借书文件”中获取所查询图书的借出情况。因此在如图2-23所示中补充的一条数据流起点是“图书目录文件”,终点是“2.2图书信息查询”,数据流名称是“图书基本信息”;另一条数据流起点是“借书文件”,终点是“2.2图书信息查询”,数据流名称是“图书借出情况”。