void ShellSort(int* a, int n) {
int gap = n;
while (gap > 1) {
gap = gap / 3 + 1;/*排序元素的间隔
只不过间隔不断变小*/
for (int i = 0; i < n - gap; i++) {
int end = i;
int tmp = a[end + gap];
while (end >= 0) {//插入排序,不过是对间隔为gap的几个元素进行插入排序
if (a[end] > tmp) {
a[end + gap] = a[end];
end -= gap;
}
else {
break;
}
}/*遇到一个大于tmp的元素,
或者是end<0的时候(因为有时候该元素已经是正确的位置)*/
a[end + gap] = tmp;
}
}
}
发布日期:
2023-06-22
更新日期:
2023-06-22
文章字数:
139
阅读次数:
本博客所有文章除特別声明外,均采用
CC BY 4.0
许可协议。转载请注明来源
AllenMirac
!