排序——希尔排序

简介: 排序——希尔排序

03ec969cbe3e4106b9e8833bb030a5ef.png希尔排序的基本思想

希尔排序又称缩小增量排序,因 DL. Shell于 1959 年提出而得名。先将待排序表按照一定的间隔分割成多个子表,对各个子表分别进行直接插入排序。缩小增量d,重复上述过程,知道d=1 为止。

步骤

image.png

过程演示

  1. 初始序列b95dbced325a8c54b3bc327aa1800f74.png
  2. 第一趟,初始增量取d=length/2=10/2=5e94d16c18f726fe65873a36c2ea754a1.png
  3. 第二趟,修改增量 d =d/2=2608b797fffcd3d400ab3aa3e500b4c6e.png
  4. 第三趟,修改增量 d=d/2=1,得到最终排序结果8b4759e83256a79253afd634b95a39bd.png

算法代码

#include<iostream>usingnamespacestd;
//希尔排序 voidShellSort(intnums[],intn){
intd,i,j,temp;
for(d=n/2;d>=1;d/=2){                           //初始增量:d/2,d=1结束 for(i=d;i<n;i++){                           //每一趟使用直接插入排序 temp=nums[i];                       
for(j=i;j>=d&&temp<nums[j-d];j-=d){
nums[j]=nums[j-d];
            }
nums[j]=temp;
        }
    }
}
//打印数组 voidprintNum(intnumbers[],intn){
for(inti=0;i<n;i++){
cout<<numbers[i]<<" ";
    }
}
intmain()
{
intnumbers[10]={3,44,38,5,47,15,36,26,1,2};
intn=sizeof(numbers)/sizeof(numbers[0]);   //数组长度 ShellSort(numbers,n);       //调用 InsertSort 函数进行插入排序 printNum(numbers,n);        //打印数组 return0;
}

注:当 d=1 时,希尔排序会变成直接插入排序


算法性能分析

image.png


image.png



目录
相关文章
|
存储 人工智能 算法
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
AI 绘画Stable Diffusion 研究(四)sd文生图功能详解(上)
1672 0
|
测试技术 数据库
腾讯游戏测试工程师的经验心得分享
腾讯游戏测试工程师的经验心得分享
735 0
|
SQL 运维 监控
高并发接口超时时间过长,导致服务雪崩
高频访问接口超时时间过长,导致服务雪崩
818 0
高并发接口超时时间过长,导致服务雪崩
AWS-EC2多弹性ip配置
AWS-EC2多弹性ip配置
1299 0
AWS-EC2多弹性ip配置
|
7月前
|
运维 网络协议 Go
Go网络编程:基于TCP的网络服务端与客户端
本文介绍了使用 Go 语言的 `net` 包开发 TCP 网络服务的基础与进阶内容。首先简述了 TCP 协议的基本概念和通信流程,接着详细讲解了服务端与客户端的开发步骤,并提供了简单回显服务的示例代码。同时,文章探讨了服务端并发处理连接的方法,以及粘包/拆包、异常检测、超时控制等进阶技巧。最后通过群聊服务端的实战案例巩固知识点,并总结了 TCP 在高可靠性场景中的优势及 Go 并发模型带来的便利性。
|
10月前
|
安全 Linux iOS开发
Cisco Secure Client 5.1.7.122 发布,新增功能概览
Cisco Secure Client 5.1.8.122 (macOS, Linux, Windows & iOS, Andrord) - 远程访问和安全客户端
582 4
Cisco Secure Client 5.1.7.122 发布,新增功能概览
|
数据采集 人工智能 小程序
【一步步开发AI运动小程序】十、姿态动作相似度比较
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,重点讲解姿态动作相似度比较功能的运用,包括样本动作帧的采集和姿态相似度的计算方法,以及在组合运动中的应用实例。
|
存储 算法 安全
【MD5】什么是MD5?md5的简要描述
【MD5】什么是MD5?md5的简要描述
1024 0
|
JavaScript 前端开发 IDE
三大主流框架
三大主流框架
|
虚拟化 Docker 容器
【Docker】Docker容器和虚拟机的区别是什么?
【4月更文挑战第20天】【Docker】Docker容器和虚拟机的区别是什么?

热门文章

最新文章