八大排序·希尔排序

在这里插入图片描述

大家好,我是安然无虞。

文章目录

  • 希尔排序
    • 1.基本思想
      • 预排序
    • 2.算法实现
    • 3.时间复杂度
  • 遇见安然遇见你,不负代码不负卿。

插入排序分为两种:直接插入排序&希尔排序

希尔排序

1.基本思想

希尔排序是在直接插入排序基础上的优化,属于非常牛掰的一个排序。

核心思想:
- 先进行预排序,让数组接近有序;
- 直接插入排序

预排序

预排序步骤:

分组排,假设gap==3,间隔为gap的为一组,然后分别使用插入排序的思想对这gap组数据进行排序
在这里插入图片描述多组间隔为gap的预排序,gap由大变小,gap越大,大的数可以越快的到后面,小的数可以越快得到前面,gap越大,预排完越不接近有序,gap越小,预排完越接近有序,gap为1时就是直接插入排序
动图演示:
在这里插入图片描述预排序代码:

		for (int i = 0; i < gap; i++)//有gap组需要排{for (int j = i; j < n - gap; j += gap)//内层循环,先排红,再排绿,最后排蓝//注意内层循环的写法{//跟直接插入排序很像,不同的是需要使用gapint end = j;int tmp = a[end + gap];while (end >= 0){if (a[end] > tmp){a[end + gap] = a[end];end -= gap;}else{break;}}a[end + gap] = tmp;}}

这是最初的写法,其实这个代码是可以优化的:

//预排序优化for (int i = 0; i < n - gap; i++)//把间隔为gap的多组数据同时排//当到n-gap-1的位置就终止了{int end = i;int tmp = a[end + gap];while (end >= 0){if (a[end] > tmp){a[end + gap] = a[end];end -= gap;}else{break;}}a[end + gap] = tmp;}

2.算法实现

//希尔排序
void ShellSort(int* a, int n)
{//一开始初始化gap为nint gap = n;while (gap > 1)//gap大于1都是预排序,gap==1时为直接插入排序{//为保证gap最终结果为1,可以gap/=2,也可以是gap=gap/3+1;gap /= 2;//预排序优化for (int i = 0; i < n - gap; i++)//把间隔为gap的多组数据同时排//当到n-gap-1的位置就终止了{int end = i;int tmp = a[end + gap];while (end >= 0){if (a[end] > tmp){a[end + gap] = a[end];end -= gap;}else{break;}}a[end + gap] = tmp;}}
}

完整代码:
在这里插入图片描述

3.时间复杂度

希尔排序的时间复杂度是:O(N*logN)

在这里插入图片描述

遇见安然遇见你,不负代码不负卿。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/72150.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十大排序之希尔排序

希尔排序 希尔排序(Shell Sort)是插入排序的一种算法&#xff0c;是对直接插入排序的一个优化&#xff0c;也称缩小增量排序。 希尔排序是非稳定排序算法。 希尔排序因DL&#xff0e;Shell于1959年提出而得名。 希尔排序是将待排序的数组元素按下标的一定增量分组 &#xff…

NBA球员出手位置分布图

小白一只&#xff0c;想转行互联网行业的数据分析&#xff0c;通过寒假的佛系学习对python有了一定的了解。记录一下第一个小玩意儿。 在刷crossin论坛的时候突然看到一篇关于NBA的数据分析&#xff0c;因为本身自己也非常喜欢打球&#xff0c;顿时就有了兴趣。 由于对python…

【八大排序(二)】希尔排序(谁说天才都短命?)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:八大排序专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习排序知识   &#x1f51d;&#x1f51d; Shell排序 1. 前言&#x1f6a9;2. 希尔排…

网络安全工程师需要考什么证吗?

目前网络安全行业&#xff0c;国内都有哪些证书可以考。 一、CISP-PTE &#xff08;国家注册渗透测试工程师&#xff09; CISP-PTE即注册信息安全渗透测试工程师&#xff0c;该证书由中国信息安全测评中心颁发&#xff0c;证书是国内唯一认可的渗透测试认证&#xff0c;专业性…

网络安全有哪些岗位?如何成为一名优秀的网络安全工程师?

网络安全是什么&#xff1f; 首先说一下什么是网络安全&#xff1f;其中&#xff0c;网络安全工程师工作内容具体有哪些&#xff1f; 网络安全 确保网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而受到破坏、更改、泄露&#xff0c;系统…

为什么说,网络安全工程师是网安行业的天花板?

为什么说&#xff0c;网络安全工程师是网安行业的天花板&#xff1f; 最近看到网上有很多人在问诸如&#xff1a;“怎样成为网络信息安全工程师”等相关问题&#xff0c;甚至还有人说“网络安全工程师已经成为这个行业的天花板”&#xff0c;这可能与近几年网络安全事件频发&a…

网络安全工程师必备的七大技能

网络安全有多重要 网络安全非常重要&#xff0c;因为在现代社会中&#xff0c;人们日常生活中的很多方面都与网络有关。随着互联网和数字技术的不断发展&#xff0c;人们已经变得越来越依赖网络&#xff0c;网络已经成为了商业、金融、通信、交通、能源、医疗、教育等各个领域…

软考网络工程师

网络工程师备考经验 2022年上半年网络工程师的考试已经接近尾声&#xff0c;成绩也在7月23号出来了&#xff0c;本人运气很好&#xff0c;在这次考试中取到了满意的成绩&#xff0c;下面是查询结果。 配套资料&#xff1a; 链接: https://pan.baidu.com/s/1b486ZUOYpjsNN-9oK…

网络安全工程师是做什么的?

顾名思义&#xff0c;网络安全工程师主要是维护网络的安全和稳定&#xff0c;对网页篡改、计算机病毒、系统非法入侵、数据泄密、网站欺骗、服务瘫痪、漏洞非法利用等信息安全事件进行维护。从社会角度来看&#xff0c;网络安全工程师在维护个人信息安全和解开黑客攻击上发挥着…

网络安全有哪些岗位,如何成为一位优秀的网络安全工程师?

网络安全是什么&#xff1f; 首先说一下什么是网络安全&#xff1f; 网络安全工程师工作内容具体有哪些&#xff1f; 网络安全是确保网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然的或者恶意的原因而受到破坏、更改、泄露&#xff0c;系统连续可靠正常地…

网络安全工程师和网络工程师一样吗(网络安全工程师与网络工程师)

前言 今天给各位分享网络安全工程师和网络工程师一样吗的知识&#xff0c;其中也会对网络安全工程师与网络工程师进行解释&#xff0c;如果能碰巧解决你现在面临的问题&#xff0c;别忘了关注本站&#xff0c;现在开始吧&#xff01;本文目录一览&#xff1a; 1、网络工程师、网…

如何成为一名合格的网络安全工程师?需要掌握那些能力?

近期网络的迅速发展&#xff0c;网络安全成为了一个备受关注的话题。随之而来的是网络安全工程师这个职业的兴起。成为一名合格的网络安全工程师需要具备哪些能力呢&#xff1f;下面我们来一一探讨。 首先 网络安全技术方面是网络安全工程师必须掌握的能力之一。网络安全技术…

网络安全工程师考证指南

已经到2023年了&#xff0c;那么信息安全类证书最有前途的有哪些呢&#xff1f;今天和大家一起聊聊这个话题&#xff01; 1.CISP(国家登记的信息安全专业人员) 就CISP而言&#xff0c;安全实践者基本耳闻&#xff0c;算是国内权威认证&#xff0c;毕竟有政府背景为认证做背书…

网络安全工程师需要具备的5个重要技能

网络安全工程师需要具备的5个重要技能 大数据时代&#xff0c;网络安全非常重要&#xff0c;越来越多的企业也越来越重视网络安全&#xff0c;而网络安全工程师也成为现在需求量比较大的职业&#xff0c;成都也有很多专门做网络安全培训的学校&#xff0c;为这个行业的发展输送…

【网络工程师】<软考中级>网络安全与应用

目录 一、网络安全应用&#xff1a; 1.网络安全威胁和漏洞类型&#xff1a; 2.网络安全信息数据的五大特征&#xff1a; 3.网络安全基本技术&#xff1a; 二、信息加密技术&#xff1a; 1.现代信息加密技术&#xff1a; 2.现代信息加密技术对称密钥总结表&#xff1a; …

网络安全工程师做什么?

​ 网络安全很复杂。数字化转型、远程工作和不断变化的威胁形势需要不同的工具和不同的技能组合。 系统必须到位以保护端点、身份和无边界网络边界。负责处理这种复杂安全基础设施的工作角色是网络安全工程师。 简而言之&#xff0c;网络安全工程师是负责设计和实施组织安全系…

怎么用AI自动写作文?试试这几款软件

我在工作的过程中经常需要频繁地写一些奇怪的文章&#xff0c;比如描述某种产品的使用方法、写一篇关于某种话题的分析报告。由于这些文章内容相对单一&#xff0c;且工作量大&#xff0c;我在撰写的不仅费时费力&#xff0c;甚至还有点力不从心。于是&#xff0c;我便想到可以…

PCL-点云处理(一)

PCL—点云处理&#xff08;一&#xff09; PCL—综述—三维图像处理 点云模型与三维信息点云库对滤波算法的实现PCL—点云分割&#xff08;RanSaC&#xff09;-低 点云分割RanSaC算法PCL中基于RanSaC的点云分割方法PCL—点云分割&#xff08;邻近信息&#xff09;-低 1.确定领域…

知识图谱基础知识(一): 概念和构建

推荐&#xff1a; 知识图谱构建技术一览 知识图谱基础知识之三——知识图谱的构建过程 目录 一、什么是知识图谱 二、知识图谱的分层架构 三、知识图谱构架技术 &#xff08;一&#xff09;数据获取&#xff08;Data Acquisition&#xff09; &#xff08;二&#xff0…

脑机接口实例一:脑电信号分类

文章目录 前言一、eeglab插件-脑电信号的可视化显示二、信号输入1.信号处理2.eeglab可视化显示 三、特征提取总结 前言 基于PCA&#xff0c;ICA&#xff0c;CSP等相关算法&#xff0c;以及FIR、IIR等相关滤波的学习&#xff0c;开始下一阶段&#xff0c;脑机接口的实战化训练与…