Skip to content

Commit 86c40d6

Browse files
committed
Added Shell Sort in C
1 parent 51a3124 commit 86c40d6

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

sortingAlgo/shellSort/ShellSort.c

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#include <stdio.h>
2+
3+
void shellsort(int arr[], int num)
4+
{
5+
// Rearrange elements at each n/2, n/4, n/8, ... intervals
6+
for (int i = num / 2; i > 0; i /= 2)
7+
{
8+
for (int j = i; j < num; j++)
9+
{
10+
for (int k = j - i; k >= 0; k -= i)
11+
{
12+
if (arr[k + i] >= arr[k])
13+
break;
14+
//swap the elements if the element is larger than the next element
15+
else
16+
{
17+
int tmp = arr[k];
18+
arr[k] = arr[k + i];
19+
arr[k + i] = tmp;
20+
}
21+
}
22+
}
23+
}
24+
}
25+
26+
/**
27+
* Driver code.
28+
*/
29+
int main()
30+
{
31+
int arr[] = {11, 24, 53, 46, 55, 60, 17, 58, 29, 10};
32+
int size = sizeof(arr) / sizeof(arr[0]);
33+
34+
shellsort(arr, size);
35+
36+
for (int k = 0; k < size; k++)
37+
printf("%d ", arr[k]);
38+
printf("\n");
39+
40+
return 0;
41+
}
42+
43+
/*
44+
TIme Complexity : O(nlog(n))
45+
Space Complexity : O(1)
46+
*/

0 commit comments

Comments
 (0)