import java.util.Arrays;
import java.util.Scanner;
public class ShellSort {
public static void Sort( int arr[] )
{
int inner, outer;
int valueToInsert;
int interval = 1;
int i = 0;
while(interval <= arr.length/3) {
interval = interval*3 +1;
}
while(interval > 0) {
System.out.println("iteration #:" + i);
System.out.println(Arrays.toString(arr));
for(outer = interval; outer < arr.length; outer++) {
valueToInsert = arr[outer];
inner = outer;
while(inner > interval -1 && arr[inner - interval]
>= valueToInsert) {
arr[inner] = arr[inner - interval];
inner -=interval;
System.out.println(" item moved: " + arr[inner] + "\n");
}
arr[inner] = valueToInsert;
System.out.println(" item inserted :" + valueToInsert + " at position " + inner +"\n");
}
interval = (interval -1) /3;
i++;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner( System.in );
System.out.println("Shell Sort\n");
int n, i;
/* Accept number of elements */
System.out.println("Enter number of integer elements");
n = scan.nextInt();
/* Create integer array on n elements */
int arr[] = new int[ n ];
/* Accept elements */
System.out.println("\nEnter "+ n +" integer elements");
for (i = 0; i < n; i++)
arr[i] = scan.nextInt();
Sort(arr);
System.out.println("\nElements after sorting ");
for (i = 0; i < n; i++)
System.out.print(arr[i]+" ");
System.out.println();
}
}
No comments:
Post a Comment