#include<iostream>
using namespace std;
void InsertSort(int *arr, int n)
{
int i = 0;
int j = 0;
int temp = 0;
for(i = 1; i < n; i++)
{
temp = arr[i];
for(j = i - 1; j >= 0; j--)
{
if(temp < arr[j])
{
arr[j + 1] = arr[j];
}
else
{
break;
}
}
arr[j+1] = temp;
}
}
void ShellSort(int *arr, int size)
{
int gap = size;
while(gap > 1)
{
gap = gap / 3 + 1;
int i = 0;
for(i = 0; i < size - gap; i++)
{
int end = i;
int temp = arr[end + gap];
while(end >= 0)
{
if(arr[end] > temp)
{
arr[end + gap] = arr[end];
end -= gap;
}
else
{
break;
}
}
arr[end + gap] = temp;
}
}
}
int main()
{
int array[10] = {1,3,5,7,9,2,4,6,8,0};
//InsertSort(array, 10);
ShellSort(array, 10);
for(int i = 0; i < 10; i++)
{
cout << array[i] << " ";
}
cout << endl;
return 0;
}