">

">


设有键值序列如题表所示,现采用快速排序算法以位于最左位置的键值为基准对它进行排序。请给出57,72,88这三个元素在第一趟快速排序后的位置。




【正确答案】:

元素57在位置2;

元素72在位置5;

元素88在位置8。


【题目解析】:

快速排序基本思想:在n个记录中取某一个记录的键值为标准,通常取第一个记录键值为基准,通过一趟排序将待排的记录分为小于或等于这个键值和大于这个键值的两个独立的部分,这时一部分的记录键值均比另一部分记录的键值小,然后,对这两部分记录继续分别进行快速排序,以达到整个序列有序。
一趟快速排序的具体做法:附设两个指针i和j,它们的初值分别为72和60,且把第一个记录键值72为基准,送入工作单元x中保存。首先j从末尾起逐渐前移找到第一个满足小于72的记录,即60,这时将,60与72交换位置;然后令i自i+1起逐渐增大找到第一个满足大于72的记录,即88,这时将,88与72交换位置;接着j自j-l起重复上述过程,直至i=j,此时i便是记录x所应在的位置,至此,一趟快速排序完成。具体过程如下: 

初始的关键字:72 26 57 88 42 80 73 48 60
一次交换之后:60 26 57 88 42 80 73 48 72
二次交换之后:60 26 57 72 42 80 73 48 88
三次交换之后:60 26 57 48 42 80 73 72 88
四次交换之后:60 26 57 48 42 72 73 80 88
完成一趟交换:[60 26 57 48 42] 72 [73 80 88]

故元素57在位置2; 元素72在位置5;元素88在位置8。


Top