如何使希尔排序具有稳定性

稳定上指排序前相等的数据的位置关系在排序后不发生变化
直接插入排序是稳定的。希尔排序是特殊的插入排序,但因为交换值的过程中有跳跃式的交换,所以不稳定,如下图红6和蓝6在排序后发生了变化,6个数的序列,dk先取3来看
如何使希尔排序具有稳定性
所以说希尔排序是不稳定的,如何把他改进为稳定的呢,只需在原代码上加两段代码即可
如何使希尔排序具有稳定性
具体代码作用说明在图中如何使希尔排序具有稳定性

这样每次发生交换都会有检测并且进行稳定化操作,这样下来就可使希尔排序稳定了