Related Articles

# Java Program for ShellSort

• Last Updated : 04 Dec, 2018

In shellSort, we make the array h-sorted for a large value of h. We keep reducing the value of h until it becomes 1. An array is said to be h-sorted if all sublists of every h’th element is sorted.

 `// Java implementation of ShellSort``class` `ShellSort {``    ``/* An utility function to print array of size n*/``    ``static` `void` `printArray(``int` `arr[])``    ``{``        ``int` `n = arr.length;``        ``for` `(``int` `i = ``0``; i < n; ++i)``            ``System.out.print(arr[i] + ``" "``);``        ``System.out.println();``    ``}`` ` `    ``/* function to sort arr using shellSort */``    ``int` `sort(``int` `arr[])``    ``{``        ``int` `n = arr.length;`` ` `        ``// Start with a big gap, then reduce the gap``        ``for` `(``int` `gap = n / ``2``; gap > ``0``; gap /= ``2``) {``            ``// Do a gapped insertion sort for this gap size.``            ``// The first gap elements a[0..gap-1] are already``            ``// in gapped order keep adding one more element``            ``// until the entire array is gap sorted``            ``for` `(``int` `i = gap; i < n; i += ``1``) {``                ``// add a[i] to the elements that have been gap``                ``// sorted save a[i] in temp and make a hole at``                ``// position i``                ``int` `temp = arr[i];`` ` `                ``// shift earlier gap-sorted elements up until``                ``// the correct location for a[i] is found``                ``int` `j;``                ``for` `(j = i; j >= gap && arr[j - gap] > temp; j -= gap)``                    ``arr[j] = arr[j - gap];`` ` `                ``// put temp (the original a[i]) in its correct``                ``// location``                ``arr[j] = temp;``            ``}``        ``}``        ``return` `0``;``    ``}`` ` `    ``// Driver method``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `arr[] = { ``12``, ``34``, ``54``, ``2``, ``3` `};``        ``System.out.println(``"Array before sorting"``);``        ``printArray(arr);`` ` `        ``ShellSort ob = ``new` `ShellSort();``        ``ob.sort(arr);`` ` `        ``System.out.println(``"Array after sorting"``);``        ``printArray(arr);``    ``}``}``/*This code is contributed by Rajat Mishra */`
Output:
```Array before sorting
12 34 54 2 3
Array after sorting
2 3 12 34 54
```

Please refer complete article on ShellSort for more details!

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up