【C/C++ 02】希尔排序

希尔排序虽然是直接插入排序的升级版本,和插入排序有着相同的特性,即原始数组有序度越高则算法的时间复杂度越低(预排序机制),但是是不稳定排序算法。

为了降低算法的时间复杂度,所以我们需要在排序之前尽可能提高数组的有序度。

希尔排序定义一个间隔变量gap,对待排序数组进行分组,将下标间隔为gap的多个数组分为一组,每次遍历都只对组内数据进行排序,然后降低gap,重复上述分组排序,最后gap==1,便是进行直接插入排序,但此时待排序数组的有序度已经很高了,故最后一次排序的时间复杂度接近于O(n)

gap的取值可以自定义,通常会使用gap = n / 3 + 1进行取值。

希尔排序的时间复杂度难以精确统计,与gap的取值算法和原始数组的有序性强相关,而我们gap = n / 3 + 1算法经大量实验研究得希尔排序的时间复杂度为O(n^{1.25})~O(1.6n^{1.25})

void ShellSort(int* arr, int n)
{
	int gap = n;
	while (gap > 1)
	{
		gap = gap / 3 + 1;
		int i = gap;
		for (; i < n; ++i)		
		{
			int j = i;
			int end = arr[j];
			while (j >= gap && arr[j - gap] > end)
			{
				arr[j] = arr[j - gap];
				j -= gap;
			}
			arr[j] = end;
		}
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100 子集 回溯 超简洁

Problem: 78. 子集 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 参考题解 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) Code class Solution {List<Li…

HCIA---OSPF实验

题目&#xff1a; 一:IP规划及配置 IP规划没有要求&#xff0c;所以我们可以去任意规划&#xff0c;只要每个网段不要重复就好 规划的IP 配置IP 先在每个ABR设备上配置环回和接口IP&#xff0c;然后每台设备上使用display ip interface brief都查看一下 R1&#xff1a; R3&…

《2023直播电商数字化引领者》&《2023最受欢迎直播电商消费品牌TOP100》榜单发布

“ 独行快&#xff0c;众行远” 文 | 云舒&凯丰 编辑 | 小白 出品&#xff5c;极新&#xff06;北京电子商务协会 2024年1月27日&#xff0c;由极新、北京电子商务协会主办的「2024未来直播电商科技峰会」在北京首钢园三高炉A馆报告厅盛大召开。本届峰会以“预见”为主…

方案:将vue项目放在SpringMVC中,并用tomcat访问

需要先将项目生成一次war包才能访问项目的webapp文件夹下的资源&#xff0c;否则tomcat的webapp文件夹下面不会生成对应资源文件夹就无法访问。 问题&#xff1a;目录如下&#xff1a; 今天我测试了一下将vue打包后&#xff0c;放入webapp下面访问&#xff0c;却发现vue项目无…

华为radius认证

组网需求 如图1所示&#xff0c;用户同处于huawei域&#xff0c;Router作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过Router访问目的网络。在Router上的远端认证方式如下&#xff1a; Router对接入用户先用RADIUS服务器进行认证&#xff0c;如果认证没有响应…

系列五十、idea父子项目忽略部分文件

一、idea父子项目忽略部分文件 **/mvnw **/mvnw.cmd **/.mvn **/target/ .idea **/.gitignore

分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别

分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别 目录 分类预测 | Matlab实现SCN-Adaboost随机配置网络模型SCN的Adaboost数据分类预测/故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现SCN-Adaboost随机配置网…

VRRP协议原理

目录 VRRP的产生单网关的缺陷多网关存在的问题VRRP基本概述VRRP基本结构状态机 VRRP主备备份工作过程VRRP的工作过程如果Master发生故障&#xff0c;则主备切换的过程如果原Master故障恢复&#xff0c;则主备回切的过程 VRRP联动功能 VRRP负载分担工作过程 VRRP的产生 单网关的…

Jupyter notebook文件默认存储路径以及更改方法

目录 1、文件默认存储路径怎么查&#xff1f;2、文件默认存储路径怎么改&#xff1f; 转自&#xff1a;https://blog.csdn.net/fengyeer20120/article/details/109483362 初次使用Jupyter Notebook&#xff0c;确实好用啊&#xff01;但安装Anaconda后&#xff0c;打开Jupyter …

top命令

在linux运维中&#xff0c;经常用到 top 命令&#xff0c;详细介绍一下&#xff1a; 字段介绍 时间&#xff1a; 当前时间系统运行时间当前登录用户数系统负载&#xff0c;即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 任务&#xff1a; 进程总…

自然语言nlp学习 三

4-8 Prompt-Learning--应用_哔哩哔哩_bilibili Prompt Learning&#xff08;提示学习&#xff09;是近年来在自然语言处理领域中&#xff0c;特别是在预训练-微调范式下的一个热门研究方向。它主要与大规模预训练模型如GPT系列、BERT等的应用密切相关。 在传统的微调过程中&a…

idea 创建 spring boot

1.创建步骤 2. 编码添加 2.1 这是自动生成的启动函数 package com.example.comxjctest4;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class Application {publi…

【网络协议分析】利用Wireshark分析IP分片

一、实验目的 利用Wireshark软件抓包分析IP分片&#xff0c;了解IP分片的工作原理。 二、实验过程 1、网络拓扑 设备 IP地址 设备接口 MTU AR1 172.30.132.164 Ethernet 0/0/0 700 AR2 172.30.132.165 Ethernet 0/0/0 1200 2、实验过程 &#xff08;1&#xf…

SQL Server ISO镜像文件安装

参考&#xff1a;Sql Server ISO镜像文件安装指南_sqlserveriso文件怎么安装-CSDN博客 参考文件中的步骤基本相同&#xff0c;注意两点 1、尽量安装在D盘&#xff0c;有些组件默认必须安装在C盘&#xff0c;有些会报没有目录的情况 需要在D盘创建目录。 2、我没有windows本地…

Harmony的自定义组件和Page的数据同步

在开发过程中会经常使用自定义组件,就会遇到一个问题,在页面中引入组件后,如何把改变的值传递到自定义组件中呢,这就用到了装饰器,在这是单向传递的,用的装饰器是@State和@Prop @State在page页面中监听数据的变化 @Prop在自定义组件中监听page页面传递过来的变化值,并赋…

20240129收获

今天终于发现《八部金刚功》第五部我一直做的是错的&#xff0c;嗨。这里这个写法非常聪明&#xff0c;创立的数组&#xff0c;以及用obj[key] item[key]这样的写法&#xff0c;这个写法充分展示了js常规写法中只有等号右边会去参与运算&#xff0c;等号左边就是普通的键的写法…

QT 使用XML保存操作记录

文章目录 1 实现程序保存操作记录的思路2 XML文档基本结构3 QDomDocument实现XML读写3.1 QDomDocument实现生成XML文件3.2 QDomDocument实现读取XML文件 4 QXmlStreamWriter实现读写4.1 QXmlStreamWriter实现生成XML4.2 QXmlStreamWriter实现读取XML 1 实现程序保存操作记录的思…

docker镜像详解

文章目录 一、什么是docker镜像 二、为什么需要镜像 三、镜像相关命令详解 3、1 命令清单 3、2 命令详解 四、镜像实战 4、1 镜像操作案例 4、2 离线迁移镜像 4、3 镜像存储的压缩与共享 &#x1f64b;‍♂️ 作者&#xff1a;Ggggggtm &#x1f64b;‍♂️ &#x1f440; 专栏…

西瓜书学习笔记——密度聚类(公式推导+举例应用)

文章目录 算法介绍实验分析 算法介绍 密度聚类是一种无监督学习的聚类方法&#xff0c;其目标是根据数据点的密度分布将它们分组成不同的簇。与传统的基于距离的聚类方法&#xff08;如K均值&#xff09;不同&#xff0c;密度聚类方法不需要预先指定簇的数量&#xff0c;而是通…

MGRE实验报告二

实验要求&#xff1a; 实验预览图&#xff1a; 实验分析&#xff1a; 1、对R1-R5配置IP地址&#xff0c;同时R1-R5每个路由器各有一个环回 2.1、对R1、R3、R4路由器开启虚拟接口1&#xff0c;分别配置隧道IP、接口封装协议&#xff0c;接口类型、定义封装源、开启伪广播功能&…