#include <iostream>
#include <string.h>
using namespace std;
int interval[] = { 1,3,5,7,9 };
void Print(int* arr, int size)
{
int i;
for (i = 0; i < size; i++)
{
printf("%d ,", *(arr + i));
}
printf("\n");
}
/*
相当于多个选择排序
*/
void ShellSort(int arr[], int size)
{
int step, stepsp = sizeof(interval) / sizeof(int) - 1;
int i, j, tmp;
while (stepsp >= 0)
{
step = interval[stepsp--];
for (i = step; i < size; i++)
{
tmp = arr[i];
for (j = i; j >= step && arr[j - step] > tmp; j -= step)
{
arr[j] = arr[j - step];
}
arr[j] = tmp;
}
}
}
int main()
{
int data[] = { 81,94,11,96,12,35,17,95,28,58,41,75,15 };
int size = sizeof(data) / sizeof(int);
ShellSort(data, size);
Print(data, size);
system("pause");
return 0;
}