C语言实现排序算法---希尔排序

今天又重新研究了一遍诸多排序算法,现在简单分享一下里面的希尔排序(Shell Sort)的心得

希尔排序(Shell Sort)插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。

希尔排序是稳定排序算法。该方法因DL.Shell于1959年提出而得名。



使用该算法,应首先为待排序元素序列选择一个不大于元素个数的增量,或者也称步长(step)。其本质是给元素序列分组。

现在我们有如下一组数据:

96,107, 145, 137, 106, 142, 146, 134, 32, 86

一般我们会选择元素个数的一半作为步长(这里元素个数为10,所以步长取5)。其本质是给这个序列分为5(5就是元素的下标之差)组:

(96–142,107–146,145–134,137–32,106–86,所以这几组元素都是对应关系。)。并让步长在循环中每次变为上次的一半


其次,应该从下标等于步长处开始遍历直至到达末尾。并使用一个临时变量(temp)保存每次遍历到的值,为以后的插入排序做准备.


然后,就是遍历数组啦,按照一定规则(升序还是降序,根据需要,这里以升序为例),用上面的临时变量temp来和对应位置元素比较

《C语言实现排序算法---希尔排序》

特点:

1.在进行大量数据排序上,效率较高,因为相比于冒泡,选择排序,其每次操作省略了三步赋值的开销,只有一步。

2.希尔排序是一种不稳定的排序。当一个序列处于基本有序状态时,其效率高。基本有序是指,按照其分组来看,其较大和较小

 元素分别处于两边。


希望能对大家有所帮助,有哪里不对或者不同见解的也希望积极与我联系,一起沟通,共同进步。






    原文作者:排序算法
    原文地址: https://blog.csdn.net/qq_33264262/article/details/78724210
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞