/**
* 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); 
  }
}