第二章 :查找与排序-------希尔排序

空间数据结构——查找与排序 由同一类型的数据元素(或记录)构成的集合。关键字:数据元素(或记录)中某个数据项的值,用它可以表示一个数据元素。若该关键字可以唯一地标识一个记录,则称此关键字为主关键字。:根据给定的某个值,再查找表中确定一个器关键字等于给定值的记录或数据元素(Average Search Length):为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值称为查找算法在查找成功时的平均查找长度,计算公式如下:对于有n个记录的表,查找成功时的平均查找长度如上, 阅读详情

希尔排序:

一趟一个增量,用增量用来分组,组内执行插入排序

#include<iostream>
using namespace std;

void shellSort(int arr[],int length){
	//不断地缩小增量 
	for(int interval=length/2;interval>0;interval/=2){
		/* 
		//增量为1的插入排序 
		for(int i=1;i<length;i++){
			int target=arr[i];
			int j=i-1;
			while(j>-1&&target<arr[j]){
				arr[j+1]=arr[j];
				j--;
			}
			arr[j+1]=target;
		} 
		*/
		
		//从i=增量开始,组内插入排序 
		for(int i=interval;i<length;i++){
			int target=arr[i];
			int j=i-interval;
			while(j>-1&&target<arr[j]){
				arr[j+interval]=arr[j];
				j-=interval;
			}
			arr[j+interval]=target;
		} 
		
	}
}

int main(){
	int arr[]={1,5,2,8,3,5,9};
	int len=7;
	shellSort(arr,len);
	for(int i=0;i<len;i++){
		cout<<arr[i]<<" ";
	}
	
	return 0;
}

 

结果:

 

希尔排序的性能:

【数据结构】【王道408】——PPT截图与思维导图 阅读详情

相关推荐

数据结构希尔排序

数据结构排序一章的希尔结构排序,显示结果的

冒泡排序,选择排序,插入排序,希尔排序

C语言数据结构 List item #在这里插入代码在这里插入代码片片器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码

weixin_46381608的博客 135

智能排班考勤系统原型

可实现从业务预测,到工时预估,再到人员分配全流程自动智能排班。可应用于客服行业或工厂的智能排班系统。

gywm15111336483的专栏 996

数据结构实验之排序六:希尔排序

数据结构实验之排序六:希尔排序 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 我们已经学习了各种排序方法,知道在不同的情况下要选择不同的排序算法,以期达到最好的排序效率;对于待排序数据来说,若数据基本有序且记录较少时, 直接插入排序的效率是非常好的,希尔排序就是针对一组基本有序的少

1196

本科双非的计算机考研择校注意点——经验贴

一战一志愿上岸某211的电子信息专硕。之前在某乎也发过帖子。但现在用优快云,所以把相关的心得再发出来仅供大家参考。 首先,我认为最重要的是你为什么要考研? 不管你是为了混一个文凭将来好进大厂,还是为了真正搞学术或者学知识,你要知道你自己的目标,只有坚定自己的目标,才有动力去走完这段复习的历程。真正的考研,是很苦的。如果你是为了逃避大四面临的就业才选择考研,并且还浑浑噩噩不当回事,那我劝你放弃,不如踏踏实实学点技术去找实习。那从我自己出发,我是认为自己本科双非院校且自己四年间没有学到什么专业方面的技能,

m0_56698268的博客 3165

中兴U30air随身WiFi刷机全攻略:从ABD开启到系统调试(附工具包)

本文提供中兴U30air随身WiFi刷机全攻略,从ADB开启到系统调试的详细步骤,包括必备工具清单、ADB调试模式解锁、Bootloader解锁及自定义ROM刷入与调优。适合技术爱好者深度定制设备,提升网络性能和功能扩展。

weixin_29235923的博客 1966

七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)

写在前面:                  排序是计算机程序设计中的一种重要操作,它的功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。因此排序掌握各种排序算法非常重要。对下面介绍的各个排序,我们假定所有排序的关键字都是整数、对传入函数的参数默认是已经检查好了的。只是简单的描述各个算法并给出了具体实现代码,并未做其他深究探讨。 基础知识:

李冰-冰斌 1万+

AUTOSAR 3万字面试题全面解析(持续更新)

ECU抽象层(EAL)是AUTOSAR架构中的一部分,它位于微控制器抽象层(MCAL)之下,但通常与MCAL一起被提及。EAL的目标是提供一个统一的接口来访问和管理ECU(Electronic Control Unit,电子控制单元)的硬件资源,包括处理器、存储器和外围设备。通过这种抽象,EAL使得上层软件能够以一种标准化的方式与ECU硬件交互,而不需要关心具体的硬件实现细节。EAL解决了硬件异构性带来的问题,即不同ECU可能采用不同类型的处理器和硬件配置。

大模型大数据攻城狮的专栏 5613

Java算法--第二章--查找与排序(4)希尔排序

Java算法–第二章–查找与排序(4)希尔排序 希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序 思路:如序列 9 8 7 6 5 4 3 2 1 1.确定一个增量序列,如:4(length/2) 2 1,从大到小使用增量 2.使用第一个增量,将序列化分为若干个子序列,下标组合为0-4-8,1-5,2-6,3-7 3.以此对子序列使用过直接插入排序法 4.使用第二个增量,将序列华为若干个子序列(0-2-4-6-8),(1-3-5-7) 5.以此对子序列使用这季节插

wp_886的博客 153

SAP_SD模块 物料科目分配/成本简介

路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义并分配科目代码—定义科目代码。路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义访问顺序和科目确定类型。路径:SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—收入科目确定相关性—定义并分配科目确定过程。文本主要说明销售模块中的科目分配和成本的一个对应关系。SPRO—销售与分销—基本功能—科目分配/成本—收入账户确定—检查科目分配的相关主数据。

我小时候很黑的博客 2621

【YOLOv8全方位学习手册】第四章 数据增强:从扩充数据到塑造模型的认知边界

"""使用 Albumentations 做自定义增强,兼容 YOLO 格式"""])# 转成 numpy# boxes 必须是 [[x_min,y_min,x_max,y_max], ...]# 在数据加载时调用你可以把集成到 PyTorch 的 Dataset 类里,或使用 Ultralytics 自带的DataLoader。

VectorShift的博客 211

第二章--查找与排序(中)

要能够根据递推关系分析出结果! 快速、选择、堆、希尔是不稳定的

QinLaoDeMaChu的博客 160

torch.nn.rnn实现循环神经网络

------------------------------------nn.rnn模型实现。#------------------------------------模型实现。#-----------------------------------训练模型。#-----------------------------------训练模型。#--------------------------------读取数据。实现循环神经网络,并在至少一个数据集上进行实验,从训练时间、预测精度、...

matlab_python22的博客 2974

数据结构:第二章(二)

冒泡排序、快速排序、插入排序、选择排序、希尔排序、归并排序、查找算法【线性查找算法、二分查找算法、插值查找算法、斐波那契查找算法】

keith的博客 573

【Unity工具篇】| 使用YooAsset接入自己的游戏项目,实现完整热更新流程

前面文章介绍了YooAsset的原理和接入官方示例文档的文章介绍,本文使用YooAsset接入自己的游戏项目做示例。 【Unity工具篇】| 资源管理插件YooAsset,原理及相关配置 【Unity工具篇】| 游戏完整资源热更新流程,YooAsset官方示例项目 具体接入方法有很多种,本文会参照官方示例 Space Shooter 太空战机DEMO 用到的方式接入自己的游戏项目。

努力前行,总会成为自己心中的那道光 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据结构与算法 - 常见的查找与排序算法

本文基于python介绍了算法基础、时间空间复杂度、列表查找、排序

xian_x_的博客 1306

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

算法整理:内排序篇-插入排序及其改进&希尔排序

主要介绍了插入排序、折半插入排序、二路插入排序、表插入排序和希尔排序,并分析了他们的时间复杂度和空间复杂度。

ReDreamme的博客 306

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

蓝桥杯《算法很美》第二章 查找与排序C/C++【一】

查找与排序先从讲递归开始。课程列举了很多递归典例,按照理解的难度从简到繁,部分过于简单的就不再赘述了,只写一些有意义的代码。 递归的要点 找变化,找重复,找出口,子问题要与原问题有同样的结构。 【一】 辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第...

Show me CODE 404

【希尔排序增量选择终极指南】:揭秘C语言高效实现的5大黄金法则

掌握C语言实现希尔排序的增量选择,提升算法效率。详解5种经典增量序列及其适用场景,对比时间复杂度与性能优势,助你写出更高效的排序代码。方法实用,值得收藏。

DebugLoom的博客 775

算法导论 第2章 算法入门(直接插入排序、希尔排序、冒泡排序、合并排序)

本章主要是算法知识的基础讲解,介绍了循环不变式,几个简单的排序算法,递归分治算法等内容。 1、循环不变式 循环不变式主要用来说明算法的正确性,那么什么是循环不变式呢,其实就是在循环过程中,一些元素数据必须保持的一些性质,例如在插入排序中,数组为A,必须保证三个性质: (1) 初始化:在循环开始之前,循环不变式是成立的,即:A[0]是有序的,A[1...n-1]是无序的。 (2) 保持:在循

程序缘 1536

王道数据结构课代表 - 考研数据结构 第八章 排序(内部排序:八大排序动图演示与实现 + 外部排序) 究极精华总结笔记(C版本)

数据结构与算法 笔记导航🚥🚥🚥 🥬 第一章 绪论 🥕 第二章 线性表 🥪 第三章 栈和队列 🍊 第四章 串-KMP(看毛片算法) 🍒 第五章 树和二叉树 🍀 第六章 图 🍚 第七章 查找(B树、散列表) 🧄 第八章 排序 (内部排序:八大排序动图演示与实现 + 外部排序) 🍔 数据结构与算法 复试精简笔记 🎨 408 全套初复试笔记汇总 传送门 🏃‍🏃‍🏃‍ 如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,求赞👍 、求收藏、求关注!

clzZ2的博客 1万+

C语言排序算法进阶:如何选择希尔排序的最佳增量序列(附性能测试数据)

掌握C语言希尔排序的最佳增量选择方法,提升排序效率。本文解析多种增量序列适用场景与性能对比,揭示核心优化策略,附实测数据支持。助你精准优化算法性能,值得收藏。

QuickCode的博客 621

C语言希尔排序提速10倍的秘密(Knuth与Sedgewick增量对比实测)

掌握C语言希尔排序的最佳增量选择,显著提升排序效率。通过Knuth与Sedgewick增量序列实测对比,解析不同场景下的性能差异,揭示提速10倍的关键优化方法。适用于大规模数据预处理,值得收藏。

FuncInk的博客 341

Java:基本排序算法

本章代码地址:https://github.com/hustuhao/SortAlgorithm 目录 1,逆序排序 2,选择排序 3,冒泡排序 4,折半查找 5,快速排序(quickSort) 6,归并排序 7,希尔排序(Shell Sort) 8,桶排序(Bucket Sort) 9,基数排序 10,插入排序 11,堆排序 1,逆序排序 将有序数组逆序排序。 ...

IMBA_09的博客 782

数据结构--排序算法演示

原文档流程图不好上传,见资源包或私信。

d_eng_的博客 2239
上一篇: 第二章 :查找与排序-------二分查找的递归解法
下一篇: 第二章 :查找与排序-------2.10常见函数的复杂度计算
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值