/** * author Jia Xiaoping * author Alex Rudniy * Shell sort */ class ShellSortAlgorithm extends SortAlgorithm { void sort(int a[]) { int i, j, increment, temp; increment = 3; while (increment > 0) { for (i=0; i < a.length; i++) { j = i; temp = a[i]; while ((j >= increment) && (a[j-increment] > temp)) { a[j] = a[j - increment]; j = j - increment; } a[j] = temp; pause(); } if (increment/2 != 0) increment = increment/2; else if (increment == 1) increment = 0; else increment = 1; } } public ShellSortAlgorithm(AlgorithmAnimator animator) { super(animator); } }