单项选择(2017年秋程序员软考)

对n个关键码构成的序列采用直接插入排序法进行升序排序的过程是:在插入第i个关键码ki时,其前面的 i-1 个关键码已排好序,因此令k与 ki-1、ki-2、…,依次比较,最多到 k1为止,找到插入位置并移动相关元素后将ki插入有序子序列的适当位置,完成本趟(即第 i-1 趟)排序。以下关于直接插入排序的叙述中,正确的是【 】 。

A、若原关键码序列已经升序排序,则排序过程中关键码间的比较次数最少

B、若原关键码序列已经降序排序,则排序过程中关键码间的比较次数最少

C、第1趟完成后即可确定整个序列的最小关键码

D、第1趟完成后即可确定整个序列的最大关键码

答案解析

A以4个元素(10,20,30,40)为例说明直接插入排序的特点。若元素已经按照升序排列,即k1=10,k2=20,k3=30,k4=40,那么各趟排列结果如下:第一趟将20插入仅含元素10的子序列,20与10比较1次,得到10 20;第二趟将30插入含有元素10、20的子序列,30与20比较1次,得到10 20 30;第三趟将40插入10、20、30构成的子序列,40与30比较1次,得到10 20 30 40;在上述过程中,由于待插入的元素比有序子序列的最大元素都要大,所以总共进行3次比较,也不需要移动元素。推广到有n个元素的序列,则是进行n-1次比较。若元素已经按照降序排列,即k1=40,k2=30,k3=20,k4=10,那么各趟排列结果...

查看完整答案

讨论