1.前言
和上面的直接插入排序一样,希尔排序也是一种插入的排序,更加准确的来说希尔排序是直接插入排序的一个升级版,是在直接插入排序上进行修改然后效率更高的一种插入排序。
2.原理介绍
在直接插入的排序当中,没一次都是后一个数和前一个数进行比较,满足条件的话就加一,然后再是后一个数与前一个数比较.....直到执行结束后退出。执行的间隔是1,而再希尔排序当中,执行的间隔是大于1的数,本次当中我们设定的间隔是5(这个间隔数定在1到数据的总和之间),如下面的图所示,在下面的10个数当中,由于我们设定的时间间隔是5,所以先是9和2进行比较,然后就是6和7进行比较,3和4进行比较,8和1进行比较,5和5进行比较,然后循环退出。
经过这一轮循环之后,我们将这个间隔变成5的一半2,然后再重复上面的步骤同样循环结束后退出。
最后我们再将间隔2变成它的一半1,最后我们再重复上面的步骤,需要注意的是,当间隔变成1的时候,这时的插入也就变成了直接插入排序的思想了(图形解释省略)
3.代码的展示
3.1数据准备和导入到动态数组当中
#define