当前位置:   article > 正文

数据结构初阶--希尔排序_-2到+3阶的希尔数

-2到+3阶的希尔数

 1.基本思想

希尔排序又称缩小增量法。基本思想是先选定一个整数,把待排序的数据分成几个组,对每一组的记录进行排序。重复分组和排序的工作,直到所有数据在一组内排好序。

2.希尔排序的特性

  • 希尔排序是对直接插入排序的优化
  • 当gap > 1时是预排序,使数组更接近有序。当GAP == 1时,数组已经接近有序,此时相当于直接插入排序。
  • 希尔的时间复杂度难以计算。当增量序列为dlta[k]=2^{t-k+1} -1时,希尔排序的时间复杂度为n^{3/2},其中t为排序趟数,1\leq k\leq log_{2}(n+1).
  • 当n在特定范围内时,希尔排序所用的次数约为n^{1.3},当n\rightarrow \infty时,可以减少到n(log_{2}n)^{2^{[2]}}

 3.代码实现

  1. void ShellSort(int* a, int n)
  2. {
  3. //gap > 1时预排序,使数组接近有序
  4. //gap为1时,直接插入排序
  5. int gap = n;
  6. while (gap > 1)
  7. {
  8. gap = gap / 3 + 1;
  9. for (int i = gap; i < n - gap; i++)
  10. {
  11. int end = i;
  12. int tmp = a[gap + end];
  13. while (end >= 0)
  14. {
  15. if (tmp < a[end])
  16. {
  17. a[end + gap] = a[end];
  18. end -= gap;
  19. }
  20. else
  21. {
  22. break;
  23. }
  24. }
  25. a[end + gap] = tmp;
  26. }
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/926864
推荐阅读
相关标签
  

闽ICP备14008679号