一、希尔排序

由希尔在1959年提出,设定一个元素间隔增量gap,将参加排序的序列按这个间隔分成若干个子序列,对子序列用一般排序法排序与冒泡排序的思想相似,即将两数比较交换;冒泡法是相邻两数比较交换,而希尔排序只有当希尔间隔值为1时才与冒泡法完全一样,所以可以跟据希尔间隔值的不同进行分组排序最优间隔值是至今未解决的数据难题,一般用折半间隔,直到间隔为1;如果直接将希尔间隔设为1效率则是最低的,需要多次遍历。

二、希尔排序处理过程

将固定间隔值两两比较交换,若干次后,这个序列将成为一个有序序列对分好组的子序列采用两两比较交换,循环比较一遍之后序列不一定有序,所以对于子序列可能会进行多次循环比较,直到排好序。

三、图解

四、demo

void shellsort(int *k,int n)
{int i, j, temp, gap = n;while(gap > 1){gap = gap/2;                /*增量缩小,每次减半*/for(i=0;i<n-gap;i++) //n-gap 是控制上限不让越界{j = i + gap;    //相邻间隔的前后值进行比较if(k[i]>k[j]){temp = k[i];k[i] = k[j];k[j] = temp;}}}
}

希尔排序算法(C语言实现)相关推荐

  1. c语言中希尔排序的程序,c语言实现希尔排序算法

    1.算法简介 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名.希尔排序实质上是一种分组插入方法.它的 ...

  2. 希尔排序及C语言实现

    排序系列之(4)希尔排序及C语言实现 收藏 希尔排序(Shell Sort)也称为递减增量排序算法,是插入排序的一种高速而安定的改良版.因希尔(Donald L. Shell)于1959年提出而得名. ...

  3. python算法与数据结构-希尔排序算法(35)

    阅读目录 一.希尔排序的介绍 二.希尔排序的原理 三.希尔排序的图解 四.希尔排序的python代码实现 五.希尔排序的C语言实现 六.希尔排序的时间复杂度 七.希尔排序的稳定性 一.希尔排序的介绍 ...

  4. Go 实现希尔排序算法及图解

    耐心和持久胜过激烈和狂热. 哈喽大家好,我是陈明勇,今天分享的内容是使用 Go 实现希尔排序算法.如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有 ...

  5. 经典的十种排序算法 C语言版

    经典的十种排序算法(C语言版) 1.冒牌排序 冒牌排序的特点 ​ 一趟一趟的比较待排序的数组,每趟比较中,从前往后,依次比较这个数和下一个数的大小,如果这个数比下一个数大,则交换这两个数,每趟比较后, ...

  6. 图解希尔排序——希尔排序算法(shell sort)

    希尔排序 shell sort 算法图解 算法实现(C语言) 算法分析 希尔排序又叫缩小增量排序,它是对直接插入排序算法的一种改进.希尔排序算法的基本思想是先将整个待排序的序列划分为若干个子序列,然后 ...

  7. 算法:两种步长的希尔排序算法

    算法:两种希尔排序算法 1 /** 2 * 希尔排序 3 * 不同步长的算法 4 * @author mackxu 5 * 6 */ 7 class ShellSort { 8 private int ...

  8. JavaScript实现ShellSort希尔排序算法(附完整源码)

    JavaScript实现ShellSort希尔排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 ShellSort.js完整源代码 Comparator.js完整 ...

  9. 排序算法:希尔排序算法实现及分析

    希尔排序算法介绍 希尔排序是D.LShell 与1957年提出来的一种排序算法,在这之前排序算法的时间复杂度都是O(n^2),希尔排序算法是突破这个时间复杂度的第一批算法之一.我们知道直接插入排序算法 ...

  10. 【数据结构----笔记5】插入排序算法之【希尔排序算法】

    /*__________________________________________________________________________________________________ ...

最新文章

  1. logstsh xpack 认证_ElasticSearch Kibana 和Logstash 安装x-pack记录
  2. 利用TreeSet给纯数字字符串排序
  3. onsubmit校验表单时利用ajax的return false无效解决方法
  4. 今天同大家聊一下Git扩展
  5. QT的QTransform类的使用
  6. 学生党专用计算机,开学在即何必纠结?学生党专用显卡推荐
  7. 电脑手写板_点到之处妙笔生花,实用平板电脑手写电容笔推荐
  8. 计算机输入输出设备说课稿,信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)...
  9. 12.01 晚 心情 阴雨 既然能力支撑不起自己的野心就先沉下心来努力学习好让有一天重新出现在江湖大放光芒...
  10. 编写安全的驱动程序之输入输出检查
  11. 佳铁精雕机连接电脑设置_佳铁精雕机在程式里怎么更改G57之后的坐标
  12. 解决Acunetix 12中文汉化的方法
  13. 四个技巧教你解决电磁干扰问题
  14. JavaScript就这么回事(好收藏,哪天忘了可以查一查)
  15. 架构设计基础设施保障(laaS 云虚拟使用 存储 网络 DNS运用 CDN剖析和运用)
  16. 学会这些方法,扩展磁盘分区还不是轻轻松松?
  17. rsync使用ssh指定端口
  18. @Value注解从配置文件中读取数组
  19. 怎么在WPS表格中绘制二次函数曲线图
  20. 华氏度摄氏度温度转换

热门文章

  1. leetcode-6-ZigZag Conversion
  2. 2022年最值得推荐的轻薄笔记本,灵耀X逍遥点亮高光时刻
  3. [scrapy] DEBUG: Filtered offsite request to
  4. 提供大量一级建造师资料
  5. Gnocchi 7、Gnocchi中的水平扩展
  6. html添加在线图片,HTML 图片
  7. client-go之listers包源码分析
  8. Hi8 pro加装USB 2.0接口
  9. uclibc、eglibc、glibc、Musl-libc之间的区别和联系
  10. python基础教程博客园_博客园 首页 新随笔 联系 订阅 管理 Python操作M|python基础教程|python入门|python教程...