首页 > 试题广场 >

归并插入排序是对关键字进行比较次数最少的一种内部排序方法,它

[问答题]
归并插入排序是对关键字进行比较次数最少的一种内部排序方法,它可按如下步骤进行(假设待排序元素存放在数组x[1..n]中):
(1)另开辟两个大小为┏n/2┓的数组small和large。从i=1到n-1,对每个奇数的i,比较x[i]和x[i+1],将其中较小者和较大者分别依次存入数组small和large中(当n为奇数时,small[┏n/2┓]=x[n]);
(2)对数组large[1..┗n/2┛]中元素进行归并插入排序,同时相应调整small数组中的元素,使得在这一步结束时达到large[i]<large[i+l],i=1,2,…,┗n/2┛-1,small[i]<large[i],i=1,2,…,┗n/2┛;
(3)将small[1]传送至x[1]中,将large[1]至large[┗n/2┛]依次传送至x[2]至x[┗n/2┛+1]中;
(4)定义一组整数int[i]=(2i+1+(-1)i)/3,i = 1,2,…,t-1,直至int[t]>┗n/2┛+1,利用折半插入依次将small[int[i+1]]至small[int[i]+1]插入至x数组中去。例如,若n=21,则得到一组整数int[1]=1,int[2]=3,int[3]=5,int[4]=11,由此small数组中元素应按如下次序:small[3],small[2],small[5],small[4],small[11],small[10],…,small[6],插入到x数组中去。

试以n=5和n=11手工执行归并插入排序,并计算排序过程中所作关键字比较的次数。
看不懂题目,按int[i]数组的定义不应该是int[1] = 2/3, int[2] = 2 ...吗?
发表于 2019-10-01 19:06:34 回复(0)