最新消息:想得多,做的少。一天到晚瞎鸡巴搞。

希尔排序

大概数据结构与算法 阿虚 229浏览 0评论

.      希尔排序是插入排序的加强版,插入排序和选择排序都是与相邻的两个元素做比较和交换,希尔排序是将数组按一定的大小进行“分组” 每组数组姑且认为他们是“有序”的然后在组与组之间相同的索引做比较和交换。如果分组很大的话那么就能将元素挪动到很远的地方去,尽可能的构建一个有序的数组出来,最后再用插入排序做收尾。

bool Shell(int *Array, int ArrayLength)
{
    int h = 1;

    //分组长度的选择在算法
    while (h < (ArrayLength / 3)) 
    { 
        h = 3 * h + 1; 
    } 
    
    while (h >= 1)
    {   
        for (int i = h; i < ArrayLength; i++) 
        { 
            for (int j = i; j >= h && (Array[j] < Array[j - h]); j-= h)
            {
                int tmp = Array[j - h];
                Array[j - h] = Array[j];
                Array[j] = tmp;
            }
        } 

        h /= 3;
    }

    return true;
}

转载请注明:虚无 » 希尔排序

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址