快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的三个步骤如下: 分解:选择一个枢轴

admin2015-06-03  28

问题 快速排序是一种典型的分治算法。采用快速排序对数组A[p..r]排序的三个步骤如下:
    分解:选择一个枢轴    递归求解:通过递归的调用快速排序,对子数组A[p..q-1]和A[q+1..r]分别排序。
    合并:快速排序在原地排序,故不需合并操作。
下面是快速排序的伪代码,请填补其中的空缺。伪代码中的主要变量说明如下:
    A:待排序数组。
    P,r:数组元素下标,从P到r。
    q:划分的位置。
    X:枢轴元素。
    i:整型变量,用于描述数组下标。下标小于或等于i的元素的值小于或等于枢轴元素的值。
    j:循环控制变量,表示数组元素下标。
QUICKSORT(A,P,r){
if  (pq=PARTITION(A,p,r  )  ;
QUICKSORT(A,p,q-1);
QUICKSORT(A,  q+1,  r);
}
}
PARTITION(A,p,r){
x=A[r];
i=p-1;
for  (  j  =p  ;  j  <=  r- 1;  j++  ){
        if  (A[j]  <=x){
        i=i+1  ;
        交换A和A[j];
        }
    }
    交换(1)和(2)
    //注:空(1)和空(2)答案可互换,但两空全部答对方可得分
    return(3)
}

选项

答案(1)A[i+1]或A[r]。 (2)A[r]或A[i+1]。 (3)i+1。

解析
转载请注明原文地址:https://kaotiyun.com/show/LdDZ777K
0

相关试题推荐
最新回复(0)