希尔排序
首先我们来先看一个过程,
对于这个我们首先取五为一个子序列,将13和49进行了交换,就这样一直移动到最后,将指到的两个数字进行排序,
接着我们取5的一半,下取整,就是2.
以此再对子序列中的值进行大小比较。也一直移动到最后,最后再以2的一半的下取整,为1,划分为子序列对其元素进行大小排序。
下面看一下代码事例:
gap是增量,待排序的规模n是10,所以gap=n/2=5,i的范围是从gap到最后一个关键字,i是用来选出无序序列中的一个关键字,然后将其插入到有序序列中的合适的位置的。
外层的for循环是改变选出的子序列的长度大小,刚开始是5,后来是2,再后来是1。然后内层的for循环是对子序列中的变量进行大小比较排序,满足条件就将其进行互换位置。以第一次操作为例,将arr[5]与arr[j=0]比较大小,然后满足条件就转换他们的位置。以此类推。