原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia

希尔排序(Shell's Sort)又称“缩小增量排序”(Diminishing Increment Sort)的基本思想不断缩小步长后分组排序,具体步骤为
演示实例:
C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp)
 1 #include <stdio.h>
 2 #define LEN 9
 3
 4 typedef float keyType;
 5
 6 typedef struct{
 7     keyType score;
 8     char name[20];
 9 }student;
10
11 typedef struct{
12     int length=LEN;
13     student stu[LEN];
14 }sqList;
15
16 void shellInsert(sqList &L,int step){
17     for(int k=1;k<=step&&k<L.length;k++)
18         {
19
20             for(int i=k+step;i<L.length;i+=step){
21                 L.stu[0]=L.stu[i];
22                 int j;
23                 for(j=i-step;L.stu[j].score<L.stu[0].score&&j>0&&(j+step)<L.length;j=j-step)
24                         {
25                             L.stu[j+step]=L.stu[j];
26                         }
27                 L.stu[j+step]=L.stu[0];
28             }
29         }
30
31 }
32
33 void shellSort(sqList &L){
34     int delta[5]={7,6,5,3,1};
35     for(int k=0;k<5;k++){
36         shellInsert(L,delta[k]);
37     }
38 }
39
40 int main(){
41     sqList L;
42
43     for(int i=1;i<L.length;i++){
44         printf("\n请输入第%d个学生的姓名:",i);
45         gets(L.stu[i].name);
46         printf("分数:");
47         scanf("%f",&(L.stu[i].score));
48         getchar();
49     }
50
51     shellSort(L);
52
53     for(int i=1;i<L.length;i++){
54         printf("\n学生%s 分数%f 第%d名",L.stu[i].name,L.stu[i].score,i);
55     }
56     return 1;
57 }

转载于:https://www.cnblogs.com/gangtiexia/p/5097195.html

希尔排序(Shell's Sort)的C语言实现相关推荐

  1. C语言实现希尔排序shell sort算法之一(附完整源码)

    希尔排序shell sort算法 希尔排序shell sort算法的完整源码(定义,实现,main函数测试) 希尔排序shell sort算法的完整源码(定义,实现,main函数测试) #includ ...

  2. C语言实现希尔排序shell sort算法之二(附完整源码)

    希尔排序shell sort算法 希尔排序shell sort算法的完整源码(定义,实现,main函数测试) 希尔排序shell sort算法的完整源码(定义,实现,main函数测试) #includ ...

  3. 经典排序算法 - 希尔排序Shell sort

    经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...

  4. 希尔排序( Shell Sort )使用不同的步长序列( gaps )

    希尔排序( Shell Sort )使用不同的步长序列( gaps ) 希尔排序的定义 希尔排序(Shellsort),也称递减增量排序算法,是插入排序的一种更高效的改进版本.希尔排序是非稳定排序算法 ...

  5. sort降序shell_排序之希尔排序(shell sort)

    前言 本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此:一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都有详细讲解,而我写这些博客只是记录自 ...

  6. 插入排序,二分版插入排序和希尔排序的差别详解(C语言)

    希尔排序只是在插入排序最外层加了一层循环并把插入排序中原本为一的步长改变,只需改变插入排序中与1有关的部分为step即可,但当使用哨兵(arr[0])当作中间变量时需要注意最里层的for循环条件详见代 ...

  7. 希尔排序(Shell Sort)

    希尔排序(Shell's Sort)是插入排序的一种又称"缩小增量排序"(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本.希尔排序 ...

  8. C语言 希尔排序 使用监视哨

    文章目录 算法介绍 思想讲解 优点 代码 运行结果 算法介绍 希尔排序(Shell's Sort)是插入排序的一种又称"缩小增量排序"(Diminishing Increment ...

  9. 希尔排序 C语言实现

    希尔排序 希尔排序( Shell's Sort)又称"缩小增量排序"( Diminishing Increment Sort),是插入排序的一种, 因D.L.Shell 于1959 ...

  10. 希尔排序(ShellSort) c源码

    希尔排序(Shell's Sort)其实是一种优化的插入排序,插入排序(insertSort)平均时间复杂度为O(n^2),仅仅比较时间复杂度的话,优于插入排序的还有很多其它排序方法,比如说堆排序或者 ...

最新文章

  1. ssh_config sshd_config 详解ssh_config sshd_config 详解
  2. matlab解符号方程组,matlab 求解符号方程组
  3. linux下批量转换语音采样率(8000Hz)
  4. 分享程序员提升自身能力的7个实用网站
  5. 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
  6. FPGA IIC总线协议简介
  7. CI/CD——适合你吗?
  8. 程序员很平凡,但从事着不平凡的工作!
  9. k8s的job和CronJob
  10. Jmeter之app性能测试(ios,android)
  11. Clickhouse 数据库连接工具——DBeaver
  12. matlab小波滤波详解,基于matlab的振动波形小波分析及小波基础知识学习
  13. 个人推荐一款并发测试工具
  14. 将真分数分解为埃及分数
  15. spring-xxx-xxx-0.0.1-SNAPSHOT.jar中没有主清单属性
  16. 5G 时代,优酷推出的帧享究竟是什么?
  17. lua脚本php,phpStudy中起用lua脚本_PHP教程
  18. L328 What Is Millennial Burnout?
  19. c语言中语句开始的标志是,第一个单片机程序(C语言编写)
  20. 将云顶之奕或者金铲铲S8导入数据库。

热门文章

  1. css布局详解(一)——盒模型
  2. 状态栏消息提示——使用Notification
  3. 移动手机平台的HTML5前端优化指南
  4. 浅析jQuery的链式调用 之 each函数
  5. Oracle PL/SQL语言入门
  6. windows中卸载Jenkins
  7. 《搬砖日记》Obi Rope插件的简单使用
  8. python之functools partial
  9. c++学习4 -- 输入输出
  10. Python学习-基础篇3-函数篇(2)