希尔排序及代码实现

2023-10-27

前言:

最近在学习排序,学习到希尔排序的时候对代码有一些感触,首先讲一下希尔排序是怎么个排序过程,然后在把我能够实现的从网上荡来的代码贴一下,然而这不是完了,我和组长大人在讨论一番后,发现这个荡来的代码是有些小问题的,所以把问题也写一下。

排序过程:

       待排序数组:48,  37  ,64,  96,  75,  12,  26,  48,  54,  03

       步骤一:选一个小于n(就是你的数组长度)的数字(比如选5),然后按照这个数来分组,即第一个和隔5个数之后的数字分为一组。在这个例子里:48和隔个5个数的12为一组,因为12后面不够5个数了,所以这个分组就到这了。

      分组情况:

              

       步骤二:将第一开始的分组的数字以直接插入的方式,按照从小到大的排序(也可以按照从大到小来)

                   12,26,45,54,03,48,37,64,98,75

     

   步骤三:由于第二部进行了排序,在这个基础上,再一次选一个小于 d1的数字,d2,以这个数字分组,这次以d2=3举例

       因此,第二次的分组情况如下:

         

     

步骤四:将刚刚分完组的数字,进行组内排序,还是以直接插入排序,所以排序之后结果是下面的情况:

     12,03,45,37,26,48,54,64,75

步骤五:这次还要选一个数字d3作为分组的标准,第一,二两次分别用的5,3,这次用d3=1。也就是说这次可以直接整体用直接插入排序了。

       

     

步骤六:直接插入排序结果为:03,12,26,37,45,48,54,64,75

感想:这个排序很好理解的,我一步一步的说的也很明白(自认为),下面贴出来代码,凑合着实现一下吧。

   

namespace 希尔排序
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int i;
            int temp = 0;
            int[] Array = { 48, 37, 64, 96, 75, 12, 26, 33, 54, 03 };
            for (int gap = Array.Length / 3; gap > 0; gap--)//第一重循环,按照gap的大小进行分组
            {
                for (i = 0; i < gap; i++)//第二重循环,对所有分组进行排序
                {
                    for (int j = i; j < Array.Length; j = j + gap)//第三重循环,组内进行直接插入排序
                    {
                        temp = Array[j];
                        int index = j - gap;
                        while (index >= 0 && Array[index] > temp)
                        {
                            Array[index + gap] = Array[index];
                            index = index - gap;

                        }
                        Array[index + gap] = temp;
                    }
                }
                label2.Text = label2.Text + "\r\n" + "第" + i + "次结果";
                for (int k = 0;k <Array .Length ;k ++)
                {
                    label2.Text = label2.Text + "  "  + Array[k];
                }
                
            }
        }
    }
}

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

希尔排序及代码实现 的相关文章

  • AndroidStudio项目打包成library以及jar包、aar包流程

    引言 一般项目做多了后 码农们都会整理出一系列的工具类来 为了方便在后面项目中使用 打包成library或者jar aar包供项目使用是比较好的方式 1 library方式 library方式是比较简单的方式 一般新建完一个项目的时候 点击
  • mysql意向锁的概念和用途

    锁的粒度 A 表锁 Table Lock 对整个表加锁 影响标准的所有记录 通常用在DDL语句中 如DELETE TABLE ALTER TABLE等 B 行锁 Row Lock 对一行记录加锁 只影响一条记录 通常用在DML语句中 如IN
  • Visio如何插入公式、MathTape安装

    遇到的问题 在写论文过程中发现Visio没有插入公式的选项 而从word中复制过来邮无法识别 经过我在一番百度以后解决了这个问题 首先要求我们的电脑上已经装好WPS或者MathType 我的电脑已经装了office 所以不想再装WPS 所以
  • 课程计划、课程标准、教材三者关系

    课程主要表现为课程计划 课程标准 教材 教科书是其主要部分 课程计划 国家教育主管部门制定的 包括课程设置 学科顺序 课时分配 学年编制和学周安排 课程标准 国家根据课程计划纲要的形式编写的有关某门学科的内容及实施 评价的指导行文件 如 高
  • 使用nginx搭建的各种服务

    一 nginx搭建文件服务器 1 安装nginx bin bash 安装nginx的脚本文件 先按照nginx的依赖 yum y install gcc openssl devel pcre devel gt dev null echo n
  • pytorch入门篇2 玩转tensor(查看、提取、变换)

    上一篇博客讲述了如何根据自己的实际需要在pytorch中创建tensor pytorch入门篇1 创建tensor 这一篇主要来探讨关于tensor的基本数据变换 是pytorch处理数据的基本方法 文章目录 1 tensor数据查看与提取
  • CentOS7 Failed to start LSB: Bring up/down解决方法

    关于这个问题 网上的有各种解决方法 1 类似于https blog csdn net qq 21398167 article details 46694179这篇文章中提到的 修改mac地址 大多数都是这样 2 类似于http blog 5
  • 回归分析结果表格怎么填_回归分析表怎么看懂?

    展开全部 我给你解读一份stata的回归表格吧 应该有标准表格的所有内容了 因为你没有给范62616964757a686964616fe4b893e5b19e31333332643336例 不过我们考试基本就是考stata或者eview的输
  • AD7606调试过程与源码

    公司有一个项目用到了AD7606 控制器用的STM32 使用的模式是并行16位模式 程序刷好之后发现读取的AD数据乱码 结果发现是因为AD7606的接地不对 当然这个问题是我师傅找出来的 查找的过程如下 用示波器看了BUSY线 转换线等各种
  • Python的request库应用

    我是精神抖擞王大鹏 不卑不亢 和蔼可亲 计算机硕士 目前小米大数据开发 日常会分享总结一些自己面试实际问题的回答 欢迎一起讨论 公众号 diting dapeng Requests是一常用的http请求库 它使用python语言编写 可以方
  • matlab 批量读取execl(csv)文件

    一直没时间整理自己写的垃圾代码 如今代码乱的一团糟 今天把matlab读取excel文件拿出来 需要根据数据格式稍作修改就可以用 读取核心的语句莫过这两句 dir csvread 文件下载 read csvdata author enjoy
  • NoSQL和关系型数据库的区别和使用场景

    NoSQL和关系型数据区别 文章目录 NoSQL和关系型数据区别 一 关系型数据库遵循ACID规则 1 A Atomicty 原子性 2 C Consistency 一致性 3 I Isolation 独立性 4 D Durability
  • Linux笔记

    命令 提供一定功能的工具 ssh 提供远程登录功能 参数 命令的作用对象 193 3 3 3 远程登录的作用主机 选项 命令作用的方式 p 22 通过22端口登录到主机 电脑 外壳shell 内核 输入输出设备 用户 提供意愿 转化为命令与

随机推荐

  • nestjs:Cannot read property ‘retryAttempts‘ of undefined

    描述 Cannot read property retryAttempts of undefined 解决 检查数据库的配置是否有问题
  • 日期格式化方法

    时间格式化 有时候我们会用到时间的展示 时间的展示种类也是各种各样 对于不用的产品需要不同的样式 这时候就需要我们做一下时间的格式化处理 下面是一种常见的日期显示方式 代码如下 格式化时间 param String date 原始时间格式
  • 23种设计模式(七) —— 手写实现 Builder 模式 (组装复杂实例)

    文章目录 一 Builder 模式 二 示例 2 1 示例实现功能 2 2 具体实现 2 3 运行结果 三 Builder 模式中登场的角色 四 原文链接 Author Gorit Date 2021 10 24 2021年发表博文 22
  • 你还不知道的简历准备及面试技巧

    最近已经不止听到一位朋友吐槽工作不好找了 一波又一波的裁员潮 ChatGPT 等人工智能工具的爆火 1158 万的应届毕业生 都让今年 IT 行业的就业状况雪上加霜 面对愈加激烈的求职竞争 作为程序员 应该掌握哪些面试技巧 本文邀请了 2
  • Internet的路由选择协议(RIP、OSPF)

    有关路由选择协议的几个概念 1 理想的路由算法 路由选择协议的核心就是路由算法 即路由器通过算法来获得路由 一个理想的路由算法应该具有以下的特点 算法必须是正确和完整的 算法在计算上应简单 算法应能适应通信量和网络拓扑的变化 算法应具有稳定
  • OSG仿真案例(9)——JY61陀螺仪控制飞机姿态

    前言 在调试osg中模型运动姿态时 总觉得直观性不够强 所以有了想买个硬件陀螺仪 当时并不知道这个硬件应该叫什么名字 在淘宝搜索角度传感器的 几个驱动 1 CH340驱动 这个驱动在自带资源包里面 但是不可以用 只能自己在网上找 发现是型号
  • 数据库JDBC --- Java Database Connectivity

    数据库JDBC Java Database Connectivity 关于JDBC 什么是JDBC JDBC的组成 JDBC API JDBC的数据类型 创建JDBC的步骤 常用属性 Result Set ResultSetMetaData
  • Oracle使用IN 不能超过1000问题

    1 美图 2 背景 是写代码的是遇到问题 ORA 01795 列表中的最大表达式数为 1000 虽然使用了 批量处理解决了问题 但是因为是使用了myIbatis spring boot oracle 我不太想 直接改代码 想通过修改myIb
  • 25行jQuery代码实现轮播图

    对于刚刚学习前端的同学来说 做一个轮播图是非常不容易的 今天我就将自己的心得跟和大家分享一下 实现轮播图有很多方法 今天我们就讲其中一种方法 让图片显示在一行内 然后让图片有规律的向左移动 大家可以先看看效果http www shareko
  • sqli-labs (less-24)

    sqli labs less 24 进入24关 输入用户名和密码 登入后会显示你的用户名 下面的输入框就是改密码 我在输入用户名和密码的位置试了很多次 发现用户名和密码的位置是没有注入点的 这里我们先点击右下角的 New User clic
  • Flutter-设置分割线Divider

    Divider height 1 0 indent 0 0 color MyColors color gray 150
  • PowerBI开发 第十八篇:行级安全(RLS)

    PowerBI可以通过RLS Row level security 限制用户对数据的访问 过滤器在行级别限制数据的访问 用户可以在角色中定义过滤器 通过角色来限制数据的访问 在PowerBI Service中 workspace中的memb
  • uniapp getUserProfile:fail invalid session

    uniapp uni getUserProflie 部分安卓手机调不起来弹窗 错误原因 应该在uni getUserProflie之前调用uni login 但是直接在uni login的成功回调里面调用uni getUserProflie
  • 九、Linux系统中的文件传输

    九 Linux系统中的文件传输 实验准备 两台可以通信的主机 systemctl disable firewalld systemctl stop firewalld 9 1 scp命令 上传 scp 本地文件 远程主机用户 远程主机ip
  • SDUT 2023 summer team contest(for 22) - 14

    A Amanda Lounges 题意 有n个机场 m条边 对于每个机场可能需要等候室也可能不需要 如果输入2 代表路线连接的两个机场都需要建立 输入1 代表路线连接的其中一个机场建立 必须 输入0代表路线连接的两个机场都不可以建立 问你最
  • 关于https页面使用ifream嵌套http页面问题解决

    之前公司项目 部署的时候协议用的http 然后前几天把协议换成了https的 当时也没仔细测试 觉得没什么问题 然后 昨天发现其中的某个播放视频的页面显示不出来了 报错信息 接着上这个页面的部分代码 就是这个页面用ifram嵌套了另一个项目
  • MyBatisPlus-黑马-笔记

    MyBatisPlus 目录 入门案例 标准数据层开发 标准CRUD使用 分页 DQL编程控制 条件查询 null判定 查询投影 查询条件 等值查询 范围查询 模糊查询 映射匹配兼容性 DML编程控制 id生成策略控制 多记录操作 逻辑删除
  • window.close()失效问题

    一般的窗口关闭的JS如下写法 window close 但是呢 chrome firefox等中有时候会不起作用 改为下面的写法 window open about blank self close 或者 window open self
  • lstmcell转onnx报错 自定义pytorch模型替换

    lstmcell在转onnx的时候会遇到不支持的情况 如果模型已经训练好 可以通过自己实现lstmcell的方式 加载训练好的权重 以下是实现代码 class MyLSTMCell nn Module def init self input
  • 希尔排序及代码实现

    前言 最近在学习排序 学习到希尔排序的时候对代码有一些感触 首先讲一下希尔排序是怎么个排序过程 然后在把我能够实现的从网上荡来的代码贴一下 然而这不是完了 我和组长大人在讨论一番后 发现这个荡来的代码是有些小问题的 所以把问题也写一下 排序