希尔排序
前言
先追求表中部分元素有序,在逐渐逼近全局有序
一、思想(拆表+插入排序)
假设我们初始设置增量为总数的一半,将每个分开的表插入排序
得到结果再将d/2,开始分表插入排序,直到,d=1,则全部排完
//排序1
void shell_sort(int A[], int n) {
int di;
int i;
int j;
//步长即di的变化
for (di = n / 2; di >= 1; di = di / 2) {
//注意,已分好段,每段第二个值开始操作
for (i = di + 1; i <= n; i++) {
//检查前面的值是不是比当前的值大,如果比较大的话开始调换
if (A[i] < A[i - di]) {
A[0] = A[i]; //暂存在A[0]中</