Shell Sort Algorithm
Shell Sort Algorithm
Shell Sort Algorithm
Shell sort is a highly efficient sorting algorithm and is based on insertion sort algorithm. This
algorithm avoids large shifts as in case of insertion sort if smaller value is very far right and have
to move to far left.
This algorithm uses insertion sort on widely spread elements first to sort them and then sorts the
less widely spaced elements. This spacing is termed as interval. This interval is calculated based
on Knuth's formula as −
h = h * 3 + 1
where −
h is interval with initial value 1
This algorithm is quite efficient for medium sized data sets as its average and worst case
complexity are of On where n are no. of items.
We compare values in each sub-list and swap them ifnecessary in the original array. After this step,
new array should look like this −
Then we take interval of 2 and this gap generates two sublists - {14, 27, 35, 42}, {19, 10, 33, 44}
We compare and swap the values, if required, in the original array. After this step, this array should
look like this −
And finally, we sort the rest of the array using interval of value 1. Shell sort uses insertion sort to
sort the array. The step by step depiction is shown below −
We see that it required only four swaps to sort the rest of the array.
Algorithm
We shall now see the algorithm for shell sort.
Pseudocode
We shall now see the pseudocode for shell sort.
procedure shellSort()
A : array of items
/* calculate interval*/
while interval < A.length /3 do:
interval = interval * 3 + 1
end while
end for
/* calculate interval*/
interval = (interval -1) /3;
end while
end procedure