#include <cstdio> #include <cstdlib> #include <stack> #include <algorithm> using namespace std; const int MAXN = 1000; int val[MAXN]; int n; void ShellInsert(int dk) { int current; for (int i = dk;i < n;i++) { if (val[i] < val[i - dk]) { current = val[i]; int j; for (j = i - dk;j >= 0 && current < val[j];j -= dk) val[j + dk] = val[j]; val[j + dk] = current; } } } void ShellSort() { int current, t = 4; int dlta[] = {7, 5, 3, 1}; for (int i = 0;i < t;i++) { ShellInsert(dlta[i]); } } int main() { scanf("%d", &n); for (int i = 0;i < n;i++) { scanf("%d", &val[i]); } ShellSort(); for (int i = 0;i < n;i++) { printf("%d ", val[i]); } puts(""); return 0; } /************************************************************** Problem: 2173 User: admin Language: C++ Result: Accepted Time:8 ms Memory:1148 kb ****************************************************************/