1.希尔排序
分组处理
//希尔排序
#include <stdio.h>
#include <stdlib.h>
void Print(int *arr, int size)
{
for (int i = 0; i < size; i++)
{
printf(" %d ", arr[i]);
}
printf("\n");
}
void Shell_Sort(int *arr, int len)
{
int gap = len;
do
{
gap = gap / 3 + 1;
for (int i = gap; i<len; i++)
{
int k = i;
int tmp = arr[i];
for (int j = i - gap; j >= 0 && arr[j]>tmp; j -= gap)
{
arr[j + gap] = arr[j];
k = j;
}
arr[k] = tmp;
}
Print(arr, len);
} while (gap > 1);
}