You are on page 1of 1

#include <iostream>

using namespace std;

void shellSort(int arr[], int n)


{
int gap = 1;

// Choose gap sequence


while (gap < n / 3)
{
gap = 3 * gap + 1;
}

while (gap > 0)


{
// Sort each subarray using insertion sort
for (int i = gap; i < n; i++)
{
int temp = arr[i];
int j = i;

while (j >= gap && arr[j - gap] > temp)


{
arr[j] = arr[j - gap];
j -= gap;
}

arr[j] = temp;
}

// Reduce gap
gap /= 3;
}
}

int main()
{
int arr[] = {17, 11, 13, 5, 3, 7, 1, 9, 15};
int n = sizeof(arr) / sizeof(arr[0]);

shellSort(arr, n);

cout << "Sorted array: ";


for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
cout << endl;

return 0;
}

You might also like