| template <class T> void ShellSort(T a[], int N, int& KCN, int& RMN) { KCN = 0; RMN = 0; for (int gap = N/2; gap; gap = gap/2) for (int i = gap; i < N; i++) { T temp = a[i]; RMN++; for (int j = i; j >= gap && ++KCN && temp < a[j - gap]; j -= gap) { a[j] = a[j - gap]; RMN++; } a[j] = temp; RMN++; } } |
| Sort ascending N=10000 TimeSpared: 0ms KCN=120005 KCN/N=12.0005 KCN/N^2=0.00120005 KCN/NlogN=0.903128 RMN=240010 RMN/N=24.001 RMN/N^2=0.0024001 RMN/NlogN=1.80626 Sort randomness N=10000 TimeSpared: 10ms KCN=258935 KCN/N=25.8935 KCN/N^2=0.00258935 KCN/NlogN=1.94868 RMN=383849 RMN/N=38.3849 RMN/N^2=0.00383849 RMN/NlogN=2.88875 Sort descending N=10000 TimeSpared: 10ms KCN=172578 KCN/N=17.2578 KCN/N^2=0.00172578 KCN/NlogN=1.29878 RMN=302570 RMN/N=30.257 RMN/N^2=0.0030257 RMN/NlogN=2.27707 |
| Sort ascending N=100000 TimeSpared: 140ms KCN=1500006 KCN/N=15.0001 KCN/N^2=0.000150001KCN/NlogN=0.903094 RMN=3000012 RMN/N=30.0001 RMN/N^2=0.000300001RMN/NlogN=1.80619 Sort randomness N=100000 TimeSpared: 230ms KCN=4041917 KCN/N=40.4192 KCN/N^2=0.000404192KCN/NlogN=2.43348 RMN=5598883 RMN/N=55.9888 RMN/N^2=0.000559888RMN/NlogN=3.37086 Sort descending N=100000 TimeSpared: 151ms KCN=2244585 KCN/N=22.4459 KCN/N^2=0.000224459KCN/NlogN=1.35137 RMN=3844572 RMN/N=38.4457 RMN/N^2=0.000384457RMN/NlogN=2.31466 |