在快速排序算法中,基础子问题可以是1个元素的数组,也可以是10个元素的数组。前者不需要排序,后者可以用冒泡排序。
第1题:
阅读以下算法说明,根据要求回答问题1~问题3。
[说明]
快速排序是一种典型的分治算法。采用快速排序对数组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)~(3)的内容填写完整。伪代码中的主要变量说明如下。
A:待排序数组
p,r:数组元素下标,从p到r
q:划分的位置
x:枢轴元素
i:整型变量,用于描述数组下标。下标小于或等于i的元素的值,小于或等于枢轴元素的值
j:循环控制变量,表示数组元素下标
第2题:
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了 (61) 算法设计策略。已知确定基准元素操作的时间复杂度为,则快速排序算法的最好和最坏情况下的时间复杂度为 (62) 。
A.分治
B.动态规划
C.贪心
D.回溯
第3题:
第4题:
第5题:
第6题:
下列排序算法中,()不能保证每趟排序至少能将一个元素放到其最终的位置上。
第7题:
对用数组存储的线性表(16,15,32,11,6,30),用快速排序算法进行由小到大排序,若排序下标范围为0~5,选择元素16作为支点,调用一趟快速排序算法后,元素16在数组中的下标位置为()
第8题:
冒泡排序算法中降序排序指的是()
第9题:
一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完,这种排序算法被称为()。
第10题:
快速排序
shell排序
堆排序
冒泡排序
第11题:
冒泡排序
选择排序
插入排序
快速排序
第12题:
堆排序
冒泡排序
快速排序
插入排序
第13题:
在待排序的元素序列基本有序的前提下,效率最高的排序算法是______。
A.冒泡排序
B.选择排序
C.快速排序
D.归并排序
第14题:
● 如果待排序序列中两个元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。 (41) 是稳定的排序方法,因为这种方法在比较相邻元素时,值相同的元素并不进行交换。
(41)
A. 冒泡排序
B. 希尔排序
C. 快速排序
D. 简单选择排序
第15题:
第16题:
第17题:
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了()算法设计策略。
第18题:
下列排序算法中,()算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。
第19题:
采用下列排序算法对n个元素进行排序,其排序趟数肯定为n-1趟的排序方法有()。
第20题:
对相邻的元素进行两两比较,顺序相反则进行交换,不断重复直到元素全部有序的排序算法称为()
第21题:
在下列算法中,()算法可能出现下列情况:在最后一趟开始之前,所有的元素都不在其最终的位置上。
第22题:
第23题:
希尔排序
快速排序
冒泡排序
堆排序
第24题:
冒泡排序
快速排序
插入排序
选择排序