快速排序小问题

如果这是一道选择题,很明显结果应该是c。

根据快速排序的规则可以看出,第一次排序后,比基点小的应该在基点前面,比基点大的应该在基点后面。

我按照排序法验证了一下,结果和LZ的一样。看来出题的人要反思了,呵呵。

我觉得考题的目的是检查考生对知识点的理解程度。一道小小的选择题就要花很多时间去计算,对考生不公平。所以,我会选c,当然,经查证其答案也是有问题的)

详细流程:

541,132,984,746,518,181,946,314,205,827 * *数十,key = 565438。

开始时,I=0,J=9。

1,从后向前求小于key的数,J=8(205),与I(0)位交换(541),结果是

205,132,984,746,518,181,946,314,541,827

i=i+1=1

2.目前I=1,J=8。从前到后找出大于键的数字。I=2(984)与J(8)位(541)交换,结果为。

205,132,541,746,518,181,946,314,984,827

j=j-1=7

3.目前I = 2,j = 7。从后向前求小于key的数,J=7(314),用I(2) bit (541)交换。结果是

205,132,314,746,518,181,946,541,984,827

i=i+1=3

4.目前I=3,J=7。从前到后找出大于键的数字。I=3(746)与J(7)位(541)交换。结果是

205,132,314,541,518,181,946,746,984,827

j=j-1=6

5.目前I = 3,J = 6。从后向前求小于key的数,J=5(181),与I(3)(541)交换。结果是。

205,132,314,181,518,541,946,746,984,827

6.目前I=3,J=5。从前到后找出大于键的数字。当J==I时,该扫描结束,结果是:

205,132,314,181,518,541,946,746,984,827