//Shell Sort
#include <iostream>
using namespace std;

int shellSort(int arr[], int n)
{
	for (int gap = n/2; gap > 0; gap /= 2)
	{
		for (int i = gap; i < n; i += 1)
		{

			int temp = arr[i];
			int j;		
			for (j = i; j >= gap && arr[j - gap] > temp; j -= gap)
				arr[j] = arr[j - gap];
			arr[j] = temp;
		}
	}
	return 0;
}

int main()
{
    int n;
    cout<<"Enter number of elements";
    cin>>n;
    int arr[n];
    cout<<"Enter Array elements";
    for (int i=0; i<n; i++)
		cout>>arr[i];
	cout << "Array before sorting: \n";
	for (int i=0; i<n; i++)
		cout << arr[i] << " ";
	shellSort(arr, n);
	cout << "\nArray after sorting: \n";
	for (int i=0; i<n; i++)
		cout << arr[i] << " ";
	return 0;
}
