当前位置:   article > 正文

四、C#希尔排序算法

四、C#希尔排序算法

简介

希尔排序简单的来说就是一种改进的插入排序算法,它通过将待排序的元素分成若干个子序列,然后对每个子序列进行插入排序,最终逐步缩小子序列的间隔,直到整个序列变得有序。希尔排序的主要思想是通过插入排序的优势,减小逆序对的距离,从而提高排序效率。

希尔排序实现原理

  1. 首先要确定一个增量序列(初始间隔),将待排序序列分成多个子序列

  2. 对每个子序列分别进行插入排序,即在子序列内部进行排序。

  3. 逐步减小增量,重复步骤2,直到增量为1,即完成最后一次插入排序,排序完成。

希尔排序代码实现

  1. public static void ShellSort(int[] array)
  2. {
  3. int arrLength = array.Length;
  4. // 初始化增量(初始间隔)为数组长度的一半
  5. int gap = arrLength / 2;
  6. // 不断缩小增量,直到增量为1
  7. while (gap > 0)
  8. {
  9. // 对每个子序列进行插入排序
  10. for (int i = gap; i < arrLength; i++)
  11. {
  12. int temp = array[i];
  13. int j = i;
  14. // 在子序列内部进行插入排序
  15. while (j >= gap && array[j - gap] > temp)
  16. {
  17. array[j] = array[j - gap];
  18. j -= gap;
  19. }
  20. array[j] = temp;
  21. }
  22. // 缩小增量
  23. gap /= 2;
  24. }
  25. }
  26. public static void ShellSortRun()
  27. {
  28. int[] array = { 19, 20, 22, 32, 34, 50, 99, 49, 1, 11, 11, 55, 35, 93, 96, 71, 70, 38, 78, 48 };
  29. Console.WriteLine("排序前数组:" + string.Join(", ", array));
  30. ShellSort(array);
  31. Console.WriteLine("排序后数组:" + string.Join(", ", array));
  32. }

运行结果

C#十大排序总结-CSDN博客

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

闽ICP备14008679号