Shell sort is mainly a variation of Insertion Sort. The idea of shell sort is to allow exchange of far items. In shell sort, we make the array N-sorted for a large value of N. We keep reducing the value of N until it becomes 1. An array is said to be N-sorted if all sub-lists of every N'th element is sorted.