希尔排序介绍
希尔排序核心思想就是:1,分组;2,直接插入排序:越有序越快
希尔排序就是多次利用直接插入排序的一个排序算法.
希尔排序的算法思想:间隔式分组,利用直接插入排序让组内有序,然后缩小分组再次排序,直到组数为1希尔排序的理论基础就是直接插入排序越有序越快;
希尔排序示意图:
完整代码
//一趟希尔排序,gap为组数(间隔)
static void Shell(int* arr, int len, int gap)
{int tmp;int j;for (int i = gap; i < len; i++){tmp = arr[i];for (j = i - gap; j >= 0; j -= gap){if (arr[j] > tmp){arr[j + gap] = arr[j];}else {break; }}arr[j + gap] = tmp; }
}void ShellSort(int* arr, int len)
{int d[] = { 5,3,1 };//分组数,最后一个一定为1 for (int i = 0; i < sizeof(d) / sizeof(d[0]); i++) {Shell(arr, len, d[i]);//一趟希尔排序 }
}
本篇完!🍗