template<class T> void swap(T* x, int i, int j) { T tmp; tmp = x[i]; x[i] = x[j]; x[j] = tmp; } template<class T> void ShellSortBin(T* x) { int d = n; while (d > 1) { d /= 2; int i = 0, j = 0; /* делаем 1 "пузырьковый" проход для элементов каждой группы */ while (j = i + d < n) { if (x[i] > x[j]) { swap(x, i, j); } i++; } } InsertSort(x); }