zoukankan      html  css  js  c++  java
  • 希尔排序(Shell's Sort)的C语言实现


    原创文章,转载请注明来自钢铁侠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("
    请输入第%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("
    学生%s 分数%f 第%d名",L.stu[i].name,L.stu[i].score,i);
    55     }
    56     return 1;
    57 }
  • 相关阅读:
    跨域问题(使用jsonp解决)
    通用Mapper使用(Maven+SSM)
    hosts文件修改(域名和IP地址对应修改)
    ExportExcel(用poi导出Excel文件:用List<Map<String,Object>>)
    activiti已结束子流程退回
    一个数据库死锁的案例
    mysql函数使用的例子
    mybatis拦截器
    Objects工具类
    Spring Boot 中读取配置属性
  • 原文地址:https://www.cnblogs.com/gangtiexia/p/5097195.html
Copyright © 2011-2022 走看看