#include #include using namespace std; template void ShellSort(vector &v) { int gap = v.size() / 2; while (gap > 0) { for (int i = gap; i < v.size(); i++) { T temp = v[i]; int j; for (j = i; j >= gap && v[j - gap] > temp; j -= gap) { v[j] = v[j - gap]; } v[j] = temp; } cout << "间隔:" << gap << endl << "排序后:"; for (int k = 0; k < v.size(); ++k) { cout << v[k] << " "; } cout << endl; gap = gap / 2; } } int main() { vector v = {1, 3, 2, 4, 6, 5, 7, 10, 9, 8}; vector::iterator it; cout << "排序前" << endl; for (it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; ShellSort(v); cout << "排序后:" << endl; for (it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; return 0; }