[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/iDev-git/Java/master/Sorts/ShellSort.java [Back]  [Original]

package Sorts;

import static Sorts.SortUtils.*;

public class ShellSort implements SortAlgorithm {

  /**
   * This method implements Generic Shell Sort.
   *
   * @param array the array to be sorted
   */
  @Override
  public  T[] sort(T[] array) {
    int length = array.length;
    int gap = 1;

    /* Calculate gap for optimization purpose */
    while (gap < length / 3) {
      gap = 3 * gap + 1;
    }

    for (; gap > 0; gap /= 3) {
      for (int i = gap; i < length; i++) {
        int j;
        T temp = array[i];
        for (j = i; j >= gap && less(temp, array[j - gap]); j -= gap) {
          array[j] = array[j - gap];
        }
        array[j] = temp;
      }
    }
    return array;
  }

  /* Driver Code */
  public static void main(String[] args) {
    Integer[] toSort = {4, 23, 6, 78, 1, 54, 231, 9, 12};

    ShellSort sort = new ShellSort();
    print(sort.sort(toSort));
  }
}

Web Proxy Viewer  |  New URL  |  Original Page