单选题
在内排序的过程中,通常需要对待排序的关键码集合进行多遍扫描。采用不同排序方法,会产生不同的排序中间结果。设要将序列<Q,H,C,Y,P,A,M,S,R,D,F,X>中的关键码按字母的升序重新排列,则______是冒泡排序一趟扫描的结果。
- A.F,H,C,D,P,A,M,Q,R,S,Y,X
- B.P,A,C,S,Q,D,F,X,R,H,M,Y
- C.A,D,C,R,F,Q,M,S,Y,P,H,X
- D.H,C,Q,P,A,M,S,R,D,F,X,Y
【正确答案】
D
【答案解析】[解析] 此题比较容易,但从历年试题看来,考的几率是比较高的,这里只将一些考生有疑问的地方提出来讲一讲。以前有考生提出疑问:“冒泡排序一趟扫描的结果标准答案为:H,C,Q,P,A,M,S,R,D,F,X,Y。如果按照冒泡排序的基本思想是先比较A[n-1]和A[n-2]一直到A[0],那么冒泡排序一趟扫描的结果得到应该是:A,Q,H,C,Y,P,D,M,S,R,F,X。”考生提出这种疑问是因为对冒泡排序的规则不清楚。冒泡排序可以先比较A[n-1]和A[n-2]一直到A[0],也可以先比较A[0]和A[1]一直到A[n-1]。
如果先比较A[n-1]和A[n-2],详细过程如下:
1.Q,H,C,Y,P,A,M,S,R,D,F,X
F和X比较,F<X,所以顺序不变;
2.Q,H,C,Y,P,A,M,S,R,D,F,X
D和F比较,D<F,所以顺序不变;
3.O,H,C,Y,P,A,M,S,D,R,F,X
R和D比较,R>D,所以交换R和D;
4.Q,H,C,Y,P,A,M,D,S,R,F,X
S和D比较,S>D,所以交换S和D;
5.Q,H,C,Y,P,A,D,M,S,R,F,X
M和D比较,M>D,所以交换M和D;
6.Q,H,C,Y,P,A,D,M,S,R,F,X
A和D比较,A<D,所以顺序不变;
7.O,H,C,Y,A,P,D,M,S,R,F,X
P和A比较,P>A,所以交换P和A;
8.Q,H,C,A,Y,P,D,M,S,R,F,X
Y和A比较,Y>A,所以交换Y和A;
9.Q,H,A,C,Y,P,D,M,S,R,F,X
C和A比较,C>A,所以交换C和A;
10.Q,A,H,C,Y,P,D,M,S,R,F,X
H和A比较,H>A,所以交换H和A;
11.A,Q,H,C,Y,P,D,M,S,R,F,X
Q和A比较,Q>A,所以交换Q和A。
用同样的方法可以推出标准答案H,C,Q,P,A,M,S,R,D,F,X,Y也是正确的。所以答案选D。