#include<stdio.h>
int shell_sort(int arr[],int length);
int main()
{
int arr[20];
int i;
for (i = 0; i < 20; i++)
{
arr[i] = 20 - i;
}
shell_sort(arr, 20);
for (i = 0; i < 20; i++)
{
printf("%4d ", arr[i]);
if ((i + 1) % 10 == 0){
puts("");
}
}
return 0;
}
int shell_sort(int arr[], int length)
{
int i, j, gap;
int temp;
for (gap = length / 2; gap > 0; gap /= 2)
for (i = gap; i < length; i++)
{
temp = arr[i];
for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)
arr[j + gap] = arr[j];
arr[j + gap] = temp;
}
return 0;
}
希尔排序(步长折半)
最新推荐文章于 2023-03-08 00:15:12 发布