算法-排序-希尔排序
发布日期:2021-05-09 00:17:47 浏览次数:13 分类:博客文章

本文共 952 字,大约阅读时间需要 3 分钟。

原理:

  希尔排序也就是对直接插入排序的一种优化应用,首先将内容根据步长分组,然后再在分组的内部用直接插入排序,直到最后分组分成所有元素都在一个组里

过程:

  先将元素根据步长分组(步长一般是len/2 然后依次除以二往后变化,几次分组后就除以几个2)然后内部用直接插入排序,一直到步长为1也就是所有内容在一个组里页排序后

  就结束了,因为这步长为1的直接插入排序和直接插入排序就是一样的

C/C++代码实现

void ShellSort(int a[], int len)//希尔排序{    int Offset = len;    while (Offset / 2 > 0)//如果步长=0表示排序结束了都    {        Offset /= 2;//步长一般先用长度除以2以此递减        for (int i = 0; i < Offset; i++)//步长为几就有几个分组        {            //对每个分组进行插入排序            for (int j = i+Offset; j < len; j += Offset)//通过步长来遍历整个分组            {                int k = j;                int temp = a[j];                if (a[j] < a[j - Offset])                {                    k = j;                    temp = a[j];                    do                    {                        a[k] = a[k - Offset];                        k -= Offset;                    } while (k != i && temp < a[k - Offset]);                }                a[k] = temp;            }        }    }}

 

上一篇:游戏外挂--外挂窗口编写
下一篇:算法-排序-直接插入排序

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月28日 04时25分03秒