以关键码序列(503,087,512,061,908,170,897,275,653,426)为例,手工执行以下排序算法,写出每一趟排序结束时的关键码状态: (1)直接插入排序; (2)希尔排序(增量d[1]=5); (3)快速排序; (5)归并排序;
时间: 2023-03-20 17:01:29 浏览: 324
(1) 直接插入排序:
首先将第一个数503视为有序序列,从第二个数087开始插入。
第一趟插入:087插入503前面,序列变为087, 503, 512, 061, 908, 170, 897, 275, 653, 426。
第二趟插入:512插入503后面,序列不变。
第三趟插入:061插入087前面,序列变为061, 087, 503, 512, 908, 170, 897, 275, 653, 426。
第四趟插入:908插入512后面,序列变为061, 087, 503, 512, 908, 170, 897, 275, 653, 426。
第五趟插入:170插入908前面,序列变为061, 087, 503, 512, 170, 908, 897, 275, 653, 426。
第六趟插入:897插入908前面,序列变为061, 087, 503, 512, 170, 897, 908, 275, 653, 426。
第七趟插入:275插入908前面,序列变为061, 087, 503, 512, 170, 897, 275, 908, 653, 426。
第八趟插入:653插入908前面,序列变为061, 087, 503, 512, 170, 897, 275, 653, 908, 426。
第九趟插入:426插入653前面,序列变为061, 087, 503, 512, 170, 897, 275, 426, 653, 908。
因此,直接插入排序的最终排序结果为061, 087, 170, 275, 426, 503, 512, 653, 897, 908。
(2) 希尔排序(增量d[1]=5):
首先将整个序列按照增量进行分组,得到如下序列:
[503, 170], [087, 897], [512, 275], [061, 653], [908, 426]
对每个分组进行直接插入排序,得到以下序列:
[170, 503], [087, 897], [275, 512], [061, 426], [653, 908]
再次按照增量进行分组,此时增量为2,得到如下序列:
[170, 512, 061, 908, 653], [503, 087, 897, 275, 426]
对每个分组进行直接插入排序,得到以下序列:
[061, 170, 512, 653, 908], [087, 275, 426, 503, 897]
最后按照增量1进行直接插入排序,得到最终排序结果:
061, 087, 170, 275, 426, 503, 512,
阅读全文