Name- Sumedh
Machhindra Dhokare
Roll No- 67
import java.util.Scanner;
public class Heap_ShellSort {
public void sort(int arr[])
{ int n = arr.length;
int ch;
System.out.println("Enter 1 for HEAP SORT, 2 for SHELL
SORT: "); Scanner c= new Scanner(System.in);
ch=c.nextInt(); if(ch==1){
// HEAP SORT
for (int i = n / 2 - 1; i >= 0; i--) {
heapify(arr, n, i);
// Heap sort
for (int i = n - 1; i >= 0; i--
){ int temp = arr[0];
arr[0] = arr[i]; arr[i] =
temp;
heapify(arr, i, 0);
}
else{ // SHELL SORT for (int interval
= n / 2; interval > 0; interval /= 2) { for (int i =
interval; i < n; i += 1) { int temp = arr[i];
int j;
for (j = i; j >= interval && arr[j - interval] > temp; j -=
interval) { arr[j] = arr[j - interval];
arr[j] = temp;
void heapify(int arr[], int n, int i) {
int largest = i;
int l = 2 * i + 1;
int r = 2 * i + 2;
if (l < n && arr[l] > arr[largest])
largest = l;
if (r < n && arr[r] > arr[largest])
largest = r;
if (largest != i) {
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
heapify(arr, n, largest);
static void printArray(int arr[])
{ int n = arr.length; for
(int i = 0; i < n; ++i)
System.out.print(arr[i] + " ");
System.out.println();
// DRIVER CODE public static
void main(String args[]) {
Scanner obj=new Scanner(System.in);
System.out.print("Enter number of elements: ");
int n=obj.nextInt();
int arr[]=new int[n];
int num; for(int
i=0;i<n;i++){
System.out.println("Enter number: ");
num=obj.nextInt(); arr[i]=num;
Heap_ShellSort srt = new Heap_ShellSort();
srt.sort(arr);
System.out.println("Sorted array is");
printArray(arr);
}
Output:
Enter number of elements: 8
Enter number:
12
Enter number:
10
Enter number:
17
Enter number:
Enter number:
Enter number:
Enter number:
Enter number:
20
Enter 1 for HEAP SORT, 2 for SHELL SORT:
Sorted array is
4 6 8 9 10 12 17 20
Enter number of elements: 5
Enter number:
6 Enter number:
Enter number:
Enter number:
15
Enter number:
Enter 1 for HEAP SORT, 2 for SHELL SORT:
Sorted array is2 3 6 8 15