# Shell Sort using C

This method makes repeated use of straight insertion or shuttle sort. An array with n elements, in each pass, an increment is chosen. The increment must be less than n and the increment progressively should be smaller and the last increment must be equal to 1.

Please find detail information on Shell Sort https://en.wikipedia.org/wiki/Shellsort

The complete source code

```/*
* File:   ShellSort.c
* Author: https://www.roytuts.com
*/

#include <stdio.h>
#include <stdlib.h>

void shellSort(int a[], int n) {
int i, j, m;
int temp;
for (m = n / 2; m > 0; m /= 2) {
for (j = m; j < n; j++) {
for (i = j - m; i >= 0; i -= m) {
if (a[i + m] >= a[i]) {
break;
} else {
temp = a[i];
a[i] = a[i + m];
a[i + m] = temp;
}
}
}
}
printf("\n");
printf("\nThe sorted array elements are given below\n");
for (i = 0; i < n; i++) {
printf("a[%d]=%d ", i, a[i]);
}
}

int main() {
int i, n = 6;
int a[] = {15, 8, 17, 12, 38, 19};
printf("\n:: Shell Sort ::\n");
printf("\nInput array elements\n");
for (i = 0; i < n; i++) {
printf("a[%d]=%d ", i, a[i]);
}
shellSort(a, n);
}```

Output

```:: Shell Sort ::

Input array elements
a[0]=15 a[1]=8 a[2]=17 a[3]=12 a[4]=38 a[5]=19

The sorted array elements are given below
a[0]=8 a[1]=12 a[2]=15 a[3]=17 a[4]=19 a[5]=38```