- #include#include#include#include using namespace std;
- void ShellSort(vector < int > &data) {
- int gap = 1;
- while (gap < data.size()) gap = gap * 3 + 1;
- for (; gap > 0; gap /= 3) {
- for (int i = gap; i < data.size(); ++i) {
- int tmp = data[i];
- int j = i - gap;
- while (j >= 0 && data[j] > tmp) {
- data[j + gap] = data[j];
- j -= gap;
- }
- data[j + gap] = tmp;
- }
- }
- }
- int main(int argc, char * argv[]) {
- vector < int > data1 = {
- 10,
- 9,
- 8,
- 7,
- 6,
- 5,
- 4,
- 3,
- 2,
- 1
- };
- vector < int > data2;
- default_random_engine dre;
- uniform_int_distribution < int > di( - 100, 100);
- for (int i = 0; i < 50; ++i) data2.push_back(di(dre));
- ShellSort(data1);
- for (auto i: data1) cout << i << " ";
- cout << endl;
- ShellSort(data2);
- for (auto i: data2) cout << i << " ";
- cout << endl;
- return 0;
- }
来源: