希尔排序
/*
*希尔排序是一种更高级的插入排序
* 原理:
* 希尔排序通过确定的某一增量(gap)将数组分成若干组
*
* 对每一个分组进行插入排序 使得每一组分组的数据达到有序
*
* 逐步缩小增量 达到小的基本在前 大的基本在后
*
* 当增量缩小到1时 整个数据分到一组 排序后达到全部有序状态
*/
#include <stdio.h>
void shell_sort(int arr[], int len) {
int gap, i, j, temp;
for (gap = len / 2; gap > 0; gap /= 2)
for (i = gap; i < len; i++) {
temp = arr[i];
j = i - gap;
while(j >= 0 && arr[j] > temp)
{
arr[i] = arr[j];
j = j - gap;
}
arr[j + gap] = temp;
}
printf("希尔排序输出:\n");
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
}
int main()
{
int len = (int)sizeof(arr) / sizeof(*arr);
int arr3[] = { 45,3,6354,45,34,6,432,5745,3423,3423 };
shell_sort(arr3, len);
}