单选题 在内排序的过程中,通常需要对待排序的关键码集合进行多遍扫描。采用不同排序方法,会产生不同的排序中间结果。设要将序列<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。