评论

C#希尔排序算法

前言

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

希尔排序实现原理

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

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

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

希尔排序代码实现 publicstaticvoidShellSort(int[] array)

{

intarrLength = array.Length;

// 初始化增量(初始间隔)为数组长度的一半

intgap = arrLength / 2;

// 不断缩小增量,直到增量为1

while(gap > 0)

{

// 对每个子序列进行插入排序

for(inti = gap; i < arrLength; i++)

{

inttemp = array[i];

intj = i;

// 在子序列内部进行插入排序

while(j >= gap && array[j - gap] > temp)

{

array[j] = array[j - gap];

j -= gap;

}

array[j] = temp;

}

// 缩小增量

gap /= 2;

}

}

publicstaticvoidShellSortRun()

{

int[] array = { 19, 20, 22, 32, 34, 50, 99, 49, 1, 11, 11, 55, 35, 93, 96, 71, 70, 38, 78, 48};

Console.WriteLine("排序前数组:"+ string.Join(", ", array));

ShellSort(array);

Console.WriteLine("排序后数组:"+ string.Join(", ", array));

}

运行结果

参考文章

  • 排序算法图解:https://cloud.tencent.com/developer/article/1502452

学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江河!!!返回搜狐,查看更多

See you next good day

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()
大家都在看
推荐阅读