在本教程中,您将学习希尔排序的工作原理,即希尔排序的详解过程及图解,此外,您将在C,C ++,Java和Python中找到希尔排序的工作示例。
希尔排序是一种算法,它首先对彼此远离的元素进行排序,并相继减少要排序的元素之间的间隔。它是插入排序的通用版本。
在希尔排序中,对特定时间间隔的元素进行排序。基于所使用的序列,元素之间的间隔逐渐减小。希尔排序的性能取决于给定输入数组使用的序列类型。
使用的一些最佳序列是:希尔的原始序列:N / 2,N / 4,...,1
Knuth的增量:1,4,13,......,(3k - 1)/ 2
塞奇威克的增量:1,8,23,77,281,1073,4193,16577 ...... 4j + 1 + 3·2j + 1。
希巴德的增量:1,3,7,15,31,63,127,255,511 ......
Papernov&Stasevich增量:1,3,5,9,17,33,65,......
普拉特:1,2,3,4,6,9,8,12,18,27,16,24,36,54,81 ....
希尔排序如何工作?假设,我们需要对以下数组进行排序。
我们使用希尔的原始序列(N/2, N/4, ...1作为算法中的间隔。
在第一个循环中,如果那么数组大小,N = 8那么位于间隔的元素将N/2 = 4被比较并交换,如果它们不是有序的话。