#include #include #include #include "book.h" #include "compare.h" // Modified version of Insertion Sort for varying increments template void inssort2(Elem A[], int n, int incr) { for (int i=incr; i=incr) && (Comp::lt(A[j], A[j-incr])); j-=incr) swap(A, j, j-incr); } template void shellsort(Elem A[], int n) { int firstincr; for (firstincr = 1; firstincr<=n; firstincr = firstincr*3 + 1); for (int i=firstincr/3; i>2; i/=3) for (int j=0; j(&A[j], n-j, i); inssort2(A, n, 1); // Could call regular inssort } template void sort(Elem* array, int n) { shellsort(array, n); } #include "sortmain.cpp"