用希尔排序法对一组数据由小到大进行排序,数据分别为 69、56、12、136、3、55、46、 99、88、25。

实现过程:

(1)自定义函数 shsort(),实现希尔排序。

(2) main() 函数作为程序的入口函数。程序代码如下:

#include

int shsort(int s[], int n) /* 自定义函数 shsort()*/

{

int i,j,d;

d=n/2; /*确定固定增虽值*/

while(d>=1)

{

for(i=d+1;i<=n;i++) /*数组下标从d+1开始进行直接插入排序*/

{

s[0]=s[i]; /*设置监视哨*/

j=i-d; /*确定要进行比较的元素的最右边位置*/

while((j>0)&&(s[0]

{

s[j+d]=s[j]; /*数据右移*/

j=j-d; /*向左移d个位置V*/

}

s[j + d]=s[0]; /*在确定的位罝插入s[i]*/

}

d = d/2; /*增里变为原来的一半*/

}

return 0;

}

int main()

{

int a[11],i; /*定义数组及变量为基本整型*/

printf("请输入 10 个数据:\n");

for(i=1;i<=10;i++)

scanf("%d",&a[i]); /*从键盘中输入10个数据*/

shsort(a, 10); /* 调用 shsort()函数*/

printf("排序后的顺序是:\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]); /*输出排序后的数组*/

printf("\n");

return 0;

}

运行结果:

请输入 10 个数据:

69 56 12 136 3 55 46 99 88 25

排序后的顺序是:

3   12   25   46   55   56   69   88   99  136

技术要点:

希尔排序是在直接插入排序的基础上做的改进,也就是将寒排序的序列按固定增量分成若干组,等距者在同二组中,然后再在组内进行直接插入排序。这里面的固定增量从 n/2 开始,以后每次缩小到原来的一半。

matlab实现希尔排序,C语言希尔排序算法相关推荐

  1. python如何给字符串排序_Python语言字符串排序方法

    本文主要向大家介绍Python语言字符串排序方法了,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一般情况下,python中对一个字符串排序相当麻烦:一.python中的字符串类 ...

  2. 希尔排序c语言,希尔排序(C/C++实现)

    封装成函数: //交换数组元素 void swap(int *a,int i,int j) { int t = a[i]; a[i] = a[j]; a[j] = t; } //希尔排序 void s ...

  3. 桶排序c语言,桶排序(Bucket Sort)的数组实现

    桶排序的数组实现 桶排序Bucket Sort从1956年就开始被使用,该算法的基本思想是由E. J. Issac R. C. Singleton提出来. 桶排序(Bucket Sort)是迄今为止最 ...

  4. c语言选择排序_C语言——选择排序

    1 选择排序(5分) 题目内容:编写选择排序,要求排序过程调用函数实现,在主函数输入n个数据,调用函数后,输出排好序的元素输入格式:输入整型数n,并输入n个整数,输入数据用空格隔开输出格式:输出排好序 ...

  5. 插入法排序c语言程序,插入排序算法及C语言实现

    插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据. 直接插入排序是插入排序算法中的一种,采用的方法是: ...

  6. 用C语言对单词首字母进行排序,c语言单词排序

    满意答案 ajuum2d8l 推荐于 2017.09.12 采纳率:59%    等级:10 已帮助:674人 程序第一次运行时,会创建一个"word.txt"(不包括引号)的文本 ...

  7. C语言希尔排序(解析)

    C语言希尔排序(解析) 网上找的移动图:

  8. C语言希尔排序及其增量序列

    希尔排序 前情提要:C语言排序算法 插入排序的神奇之处在于,只要运气够好,甚至可以达到O(n)O(n)O(n)的时间复杂度,希尔排序的思想就是想办法放大这种运气. 希尔排序又称缩小增量排序,据说是第一 ...

  9. 希尔排序(C语言简单实现)

    希尔排序(C语言简单实现) 希尔排序是直接插入排序的升级版,直接插入排序每次增量是1,但希尔排序的增量increment比1大,也就是说直接插入排序是一个一个比较的,但是希尔排序是跳着来的,从而实现顺 ...

最新文章

  1. 【Python学习系列二十】scikit-learn库模型持久化
  2. boost::type_index::type_id相关的测试程序
  3. 天猫上线“商家售后服务评价”功能,消费者体验将纳入商家考核指标
  4. 服务器系统核心和带gui区别,Windows Server 2012图形用户界面(GUI)和服务器核心(Server Core)之间的切换...
  5. activity 点击后传递数据给fragment_【磨叽教程】Android进阶之Fragment的管理以及事务执行...
  6. 使用从mysql中取数据
  7. 这款Linux 恶意软件正在劫持全球的超级计算机
  8. 查看Django版本号
  9. Android Studio 使用Method trace,查看某进程的所有线程trace的方法
  10. java 1.6 jdk 64_jdk 1.6 64位官方下载|Java JDK(Java SE Development Kit) 1.6 64位版 - 121下载站...
  11. 【场景实战】 头像违规的审查场景
  12. mysql定时导出数据_mysql定时备份数据
  13. Java 并发编程如何入门
  14. SHAP (SHapley Additive exPlanations)
  15. ArcGIS 图像合并至新栅格图层
  16. 计算机cpu intel,intel CPU后面带F是什么意思?Intel处理器后面带“F”含义详解
  17. PDF Expert for mac(专业pdf编辑器)兼容12系统兼容m1
  18. python处理word文档中的某页_Python快速设置Word文件中指定段落为目录标题
  19. [算法总结] LCA倍增法 dfs
  20. 优秀的程序员——用批判性思维批判下

热门文章

  1. Android studio升级到最新版获取SHA1时遇到的问题
  2. 奥运跆拳道资格4种方式产生
  3. 女儿的幸福来自妈妈的教育
  4. 002_HTML基础入门二【列表 + 表格】
  5. 如何使用Beyond Compare比较两个文件夹的差异
  6. error: failed to push some refs to 'git@github.com:jack-don/elema_vue.git' hint: Updates were reject
  7. mysql多表同步es一个索引_使用 Logstash 同步多个数据表到 Elasticsearch 同一个索引 (Index)...
  8. 道路视频摄像机智能分析功能及分级要求
  9. Web 前端框架 Layui
  10. 如何绘制使用组织结构图