基本思想:对待排序的数据进行一个分组,对每个组进行插入排序,分组增量取delta=delta/3+1。每个组插入排序完成后再进行总的插入排序。
原理:
1.delta初始为length,进入while(delta>1)循环,获取每次的增量:delta=delta/3+1=3;即取出a[3]与a[6]。同时将a[0]作为插入排序的基本数。
2.将取出的元素进行插入排序。j指向a[3]。若a[j]<a[j-delta],将a[j]放入temp。k指向a[0]。移动k指针依次与temp进行比较。 若a[k]>temp。则a[k+delta]=a[k]。
3.当k指针小于0或者a[k]>temp则跳出循环,将a[k+delta]=temp。完成第一轮的插入排序,依次移动j指针进行剩下的插入排序