基本思想:
希尔排序是对插入排序的一种改进改进,它是简单插入排序经过改进之后的一个更高效的版本。
通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为最小值。希尔排序通过这种策略使得整个数组在初始阶段达到从宏观上看基本有序,小的基本在前,大的基本在后。然后缩小增量,到增量为时,其实多数情况下只需微调即可,不会涉及过多的数据移动。
算法描述:
举个例子:
排序前:3,44,38,5,47,15,36,26,27,2,46,4,19,50,48
首先将该数组看成7个(arrays.length/2)数组和一个单数组,分别是:
{3,26}
,{44,27}
,{38,2},{5,46},{47,4},{15,19},{36,50}:{48}
第一趟排序:
对7个数组分别进行插入排序得到
{3,27,2,5,4,15,36,26,44,38,46,47,19,50}
把最后的元素放上去可得:
{3,27,2,5,4,15,36,26,44,38,46,47,19,50,48}
第二趟排序:
上面增量是7,现在增量应该为3,所以把