对于给定的一组关键字 46,58,15,45,90,18,10, 62, 46',58',15',45',90',18',10',62'写出希尔排序过程(自选增量序列并说明选择的原因)
时间: 2023-08-30 08:12:21 浏览: 69
关键字排序
好的,针对您的问题,我来为您解答。
首先,我需要说明的是,希尔排序是一种基于插入排序的排序算法,它通过将一个大数组分成若干个小数组来进行排序,然后逐步将这些小数组合并起来,最终完成对整个大数组的排序。希尔排序的核心思想是将待排序序列分成若干个子序列,对每个子序列进行插入排序,然后再将整个序列进行插入排序。
在希尔排序中,我们需要选择一个合适的增量序列来进行排序。增量序列是希尔排序的一个重要参数,它直接影响到希尔排序的效率。
对于您给定的关键字,我选择了增量序列为{5, 3, 1},原因如下:
1.增量序列的选择应该尽量避免出现重复的比较,从而提高排序效率。因此,我们需要选择一组不同的增量序列。
2.增量序列应该尽量地减小序列的长度,从而减少排序的时间复杂度。通过选择{5, 3, 1}这样的增量序列,我们可以将待排序序列分成多个小序列,每个小序列的长度都比较小,从而提高了排序的效率。
下面是希尔排序的排序过程:
首先,将关键字序列按照增量序列分成若干个子序列,对每个子序列进行插入排序。
第一轮排序,增量为5,将序列分成5个子序列:
46 18
58 10
15 62
45 46'
90 58'
15' 18'
45' 10'
90' 62'
对每个子序列进行插入排序,得到:
15 18
10 46
15' 46'
10' 58'
45 62
45' 58'
90 46'
90' 62'
第二轮排序,增量为3,将序列分成3个子序列:
15 10 45
18 46 58
15' 10' 45'
46' 58' 90
62 46' 90'
58' 62'
对每个子序列进行插入排序,得到:
10 10' 45'
15 18 46'
15' 46 58'
46' 58' 62
45 46' 90'
58' 90 62'
第三轮排序,增量为1,将序列分成1个子序列:
10 10' 15 15' 18 45 45' 46 46' 58 58' 62 90 90'
对该子序列进行插入排序,得到最终排序结果:
10 10' 15 15' 18 45 45' 46 46' 58 58' 62 90 90'
至此,希尔排序过程结束。
阅读全文