本题要求给出希尔排序对给定初始序列{9, 8, 7, 6, 5, 4, 3, 2, 1}利用增量序列{1, 3, 7}进行排序的分步结果。将每步结果填在下列空中。注意:相邻数字间必须有一个空格,开头结尾不得有多余空格。
时间: 2023-05-31 18:20:26 浏览: 548
(希尔排序算法).doc计算机系算法分析
### 回答1:
好的,以下是对题目的回答:
利用增量排序法对给定序列{9, 8, 7, 6, 5, 4, 3, 2, 1}利用增量序列{1, 3, 7}进行排序的过程如下:
首先,取增量1,将序列分为长度为1的子序列,每个子序列都是有序的,因为每个子序列只包含一个元素。
9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1
然后,取增量3,将序列分为长度为3的子序列,对每个子序列进行插入排序。
9 8 7 | 6 5 4 | 3 2 1
插入排序后:
7 8 9 | 4 5 6 | 1 2 3
最后,取增量7,将序列分为长度为7的子序列,对每个子序列进行插入排序。
7 8 9 4 5 6 1 | 2 3
插入排序后:
1 2 3 7 8 9 4 | 5 6
此时,我们需要将子序列 {4, 5, 6} 插入到已排好序的序列中。
1 2 3 4 5 6 7 8 9
因此,最终得到的排序结果为{1, 2, 3, 4, 5, 6, 7, 8, 9}。
请注意,每个步骤中的空格表示一个空元素,用于表示相邻的子序列之间的间隔。此外,开头和结尾不能有多余的空元素。
### 回答2:
首先,我们先对增量序列进行遍历,对于每个增量间隔,都进行一次插入排序。初始序列为{9, 8, 7, 6, 5, 4, 3, 2, 1},三个增量分别为1,3,7。
1、增量为1时,序列不会发生变化,不需要排序。
2、增量为3时,按照3开始的位置分为三个分组,即(9,6,3)(8,5,2)(7,4,1),对于每个分组分别进行插入排序。
第一步,对于(9,6,3)这个分组,将9与6比较,9大于6,将9向右移一位,保留初始位置,然后再将6移到初始位置。最后序列为(6,9,7,8,5,4,3,2,1)。
第二步,对于(8,5,2)这个分组,将8与5比较,8大于5,将8向右移一位,保留初始位置,然后再将5移到初始位置。同样地,2也需要被移动。最后序列为(6,9,7,5,8,4,3,2,1)。
第三步,对于(7,4,1)这个分组,将7与4比较,7大于4,将7向右移一位,保留初始位置,然后再将4移到初始位置。同样地,1也需要被移动。最后序列为(6,9,4,5,7,1,3,2,8)。
3、增量为7时,按照7开始的位置分为一个分组,即(6,2),进行插入排序。因为已经排好序了,可以直接输出结果。
整个排序过程中,序列被分为了三个分组依次排序,最后得到了排好序的序列(1,2,3,4,5,6,7,8,9)。
### 回答3:
首先,希尔排序是一种插入排序的变种,通过将原序列拆分成若干子序列分别进行插入排序,最终合并成一个有序序列。而增量序列是希尔排序的关键,增量序列的选择会影响希尔排序的效率。
给定初始序列{9, 8, 7, 6, 5, 4, 3, 2, 1},使用增量序列{1, 3, 7}进行排序,其分步结果如下:
第一次排序,增量为1,将序列分成9个子序列,每个子序列只有一个元素,此时序列为:
9 8 7 6 5 4 3 2 1
第二次排序,增量为3,将序列分成3个子序列,每个子序列为:
9 6 3
8 5 2
7 4 1
对每个子序列分别进行插入排序,得到:
3 6 9
2 5 8
1 4 7
此时序列为:
3 2 1 6 5 4 9 8 7
第三次排序,增量为7,将序列分成1个子序列,即整个序列,对整个序列进行插入排序,得到:
1 2 3 4 5 6 7 8 9
最终得到有序序列{1, 2, 3, 4, 5, 6, 7, 8, 9}。
从分步结果可以看出,使用增量序列{1, 3, 7}进行排序,可以快速将序列变为有序。但是,确定最优增量序列仍然是一个开放问题。
阅读全文