`
pengcc
  • 浏览: 33125 次
  • 性别: Icon_minigender_1
  • 来自: Mars
最近访客 更多访客>>
社区版块
存档分类
最新评论

C语言排序算法之“希尔排序法”

阅读更多

算法思想简单描述:

在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell1959年在以他名字命名的排序算法中实现了这一思想。算法先将要排序的一组数按某个增量d分成若干组,每组中
记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。

 

void shell_sort(int *x, int n)
{
    int h, j, k, t;
    
    for (h=n/2; h>0; h=h/2) /*控制增量*/
    {
        for (j=h; j<n; j++) /*这个实际上就是上面的直接插入排序*/
        {
            t = *(x+j);
            for (k=j-h; (k>=0 && t<*(x+k)); k-=h)
            {
                *(x+k+h) = *(x+k);
            }
            *(x+k+h) = t;
        }
    }
}

 

 

分享到:
评论

相关推荐

    c语言经典排序算法

    c语言经典排序算法 常见经典排序算法 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序

    C语言6种排序算法及其实现

    C语言中常见排序算法:冒泡排序法、选择排序法、插入排序法、快速排序法、希尔排序法、堆排序法等6种算法及其实现。

    常见经典排序算法(C语言)1希尔排序 二分插入法 直接插入法 带哨兵的直接排序法 冒泡排序 选择排序 快速排序 堆排序.docx

    常见经典排序算法(C语言)1希尔排序 二分插入法 直接插入法 带哨兵的直接排序法 冒泡排序 选择排序 快速排序 堆排序.docx

    c语言经典排序算法(8种-含源代码)

    常见经典排序算法 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序

    C语言-算法排序大全

    介绍的是关于C语言的排序法:堆排序、希尔排序、合并排序、冒泡法、交换法、选择法、插入法、SHELL排序双、向冒泡、快速排序等等排序法。

    C语言常用算法程序

    C语言常用算法程序 介绍了冒泡法 快速排序 希尔排序等常用 的C语言经典算法程序

    常见排序算法打包C语言实现

    希尔排序 快速排序 等常见排序算法C语言实现

    算法:C语言实现

    包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...

    算法:算法C语言实现 第1-4部分 基础知识、数据结构、排序及搜索

    第三部分“排序”(第6~11章)按章节顺序分别讨论基本排序方法(如选择排序、插入排序、冒泡排序、希尔排序等)、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序方法,...

    C语言冒泡排序法心得

    相信学过C语言的朋友都知道,在C语言中,常用的排序算法有:冒泡排序、快速排序、插入排序、选择排序、希尔排序、堆排序以及归并排序等等。就算没有用过,相信大家也有所耳闻。在这里呢,主要是想和大家一起来探讨...

    算法:C语言实现++第1-4部分++基础知识、数据结构、排序及搜索

    包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...

    算法c语言实现(英文版)part1-4

    包括基本算法分析原理,基本数据结构、抽象数据结构、递归和树等数据结构知识,选择排序、插入排序、冒泡排序、希尔排序、快速排序方法、归并和归并排序方法、优先队列与堆排序方法、基数排序方法以及特殊用途的排序...

    C语言归并、选择、直接插入、希尔、冒泡、快速、堆排序与顺序、二分查找排序.rar

    C语言中常见的排序算法包括归并排序、选择排序、直接插入排序、希尔排序、冒泡排序、快速排序、堆排序以及顺序查找和二分查找。这些排序算法各有特点,在不同情况下有着不同的应用场景和性能表现。 归并排序(Merge...

    C语言常用算法

    043 希尔排序 044 冒泡排序 045 快速排序 046 选择排序 047 堆排序 048 归并排序 049 基数排序 050 二叉搜索树操作 051 二项式系数递归 052 背包问题 053 顺序表插入和删除 054 链表操作(1) 055 链表...

    排序算法总结.txt

    利用C语言编写的排序算法,比如希尔排序,二分查找法等等

    希尔排序法的C源程序

    完全正确的希尔排序法源程序,在VC6.0上可以直接编译,执行。解释详细,任何人都绝对能看懂程序的执行过程。

    各种排序算法 源码

    希尔排序,基数排序,直接选择排序,快速排序,归并排序,直接插入排序,堆排序,冒泡法排序 八种排序算法的源代码,C语言实现

    各种排序算法源代码(c语言控制台程序)+毫秒级计时函数

    本人学习算法与数据结构时根据教材思想用c语言实现了桶排序、快速排序、对排序、希尔排序、归并排序等基本排序算法,另外包含排序效率测试程序及毫秒级计时程序,希望对初学者能够有一定帮助。

    排序算法源代码(C语言实现)

    C语言实现的九种经典排序算法(直接选择排序、冒泡排序、快速排序、归并排序、直接插入排序、希尔排序、折半插入排序、堆排序、基数排序),运行稳定高效。

Global site tag (gtag.js) - Google Analytics