第十四周 项目一 验证算法3.希尔排序

本文通过C++代码详细展示了希尔排序算法的实现过程,并提供了完整的程序示例及运行结果。通过对排序过程的逐步分析,帮助读者理解希尔排序的工作原理。
  1. /* 
  2. * Copyright(c) 2017,烟台大学计算机学院 
  3. * All rights reserved. 
  4. * 文件名称:a 
  5. * 作    者:张翠平 
  6. * 完成日期:2017 年 12 月 7 日 
  7. * 版 本 号:v1.0 
  8. * 
  9. * 问题描述:希尔排序
  10. * 输入描述:
  11. * 程序输出:输出排序后的结果。
  12. */  
  13. main.cpp
  14. #include <stdio.h>
    #define MaxSize 20
    typedef int KeyType;    //定义关键字类型
    typedef char InfoType[10];
    typedef struct          //记录类型
    {
        KeyType key;        //关键字项
        InfoType data;      //其他数据项,类型为InfoType
    } RecType;              //排序的记录类型定义
    
    void ShellSort(RecType R[],int n)   //希尔排序算法
    {
        int i,j,gap,k;
        RecType tmp;
        gap=n/2;                //增量置初值
        while (gap>0)
        {
            for (i=gap; i<n; i++) //对所有相隔gap位置的所有元素组进行排序
            {
                tmp=R[i];
                j=i-gap;
                while (j>=0 && tmp.key<R[j].key)//对相隔gap位置的元素组进行排序
                {
                    R[j+gap]=R[j];
                    j=j-gap;
                }
                R[j+gap]=tmp;
                j=j-gap;
            }
            printf("gap=%d:",gap);
            for (k=0; k<n; k++)
                printf("%d ",R[k].key);
            printf("\n");
            gap=gap/2;  //减小增量
        }
    }
    
    int main()
    {
        int i,n=11;
        RecType R[MaxSize];
        KeyType a[]= {16,25,12,30,47,11,23,36,9,18,31};
        for (i=0; i<n; i++)
            R[i].key=a[i];
        printf("排序前:");
        for (i=0; i<n; i++)
            printf("%d ",R[i].key);
        printf("\n");
        ShellSort(R,n);
        printf("排序后:");
        for (i=0; i<n; i++)
            printf("%d ",R[i].key);
        printf("\n");
        return 0;
    }
    



运行结果:

知识点总结和心得体会:
自己多走走程序,画画顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值