Ciura序列
一 概述
Ciura序列是一种用于希尔排序(Shell Sort)的高效增量序列。 由Marcin Ciura于2002年通过实验提出。
1)经验证最优的初始序列为:[1, 4, 10, 23, 57, 132, 301, 701]
2) 后续增量可通过最后一个元素乘以2.25生成(如:701*2.25=1577,1577*2.25=3548...)。
3)时间复杂度约为O(n^{3/2}),优于传统希尔排序的O(n^2)。
二 C++实现步骤
void shellSortCiura(vector<int>& arr) {
vector<int> gaps = {701, 301, 132, 57, 23, 10, 4, 1}; // 逆序排列
for (int gap : gaps) {
for (int i = gap; i < arr.size(); ++i) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j