排序--希尔排序

希尔排序介绍

希尔排序核心思想就是:1,分组;2,直接插入排序:越有序越快

希尔排序就是多次利用直接插入排序 的一个排序算法.

希尔排序的算法思想:间隔式分组 ,利用直接插入排序让组内有序,然后缩小分组再次排序,直到组数为1希尔排序的理论基础就是直接插入排序越有序越快 ;

希尔排序示意图:

完整代码

cpp 复制代码
//一趟希尔排序,gap为组数(间隔)
static  void  Shell(int* arr, int len, int gap)
{
	int  tmp;
	int j;
	for (int i = gap; i < len; i++)
	{
		tmp = arr[i];
		for (j = i - gap; j >= 0; j -= gap)
		{
			if (arr[j] > tmp)
			{
				arr[j + gap] = arr[j];
			}
			else  
			{
				break;  
			}
		}
		arr[j + gap] = tmp;  
	}
}

void  ShellSort(int* arr, int len)  
{
	int d[] = { 5,3,1 };//分组数,最后一个一定为1  
	for (int i = 0; i < sizeof(d) / sizeof(d[0]); i++)  
	{
		Shell(arr, len, d[i]);//一趟希尔排序  
	}
}

本篇完!🍗

相关推荐
格林威4 分钟前
Baumer相机金属焊缝缺陷识别:提升焊接质量检测可靠性的 7 个关键技术,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·堡盟相机
それども11 分钟前
什么是MalformedStreamException,和WebKitFormBoundary有什么关系
java
你撅嘴真丑29 分钟前
第八章 - 贪心法
开发语言·c++·算法
VT.馒头34 分钟前
【力扣】2625. 扁平化嵌套数组
前端·javascript·算法·leetcode·职场和发展·typescript
wanghu202435 分钟前
AT_abc443_C~E题题解
c语言·算法
思想在飞肢体在追36 分钟前
Springboot项目配置Nacos
java·spring boot·后端·nacos
cyforkk38 分钟前
09、Java 基础硬核复习:异常处理(容错机制)的核心逻辑与面试考点
java·数据库·面试
历程里程碑40 分钟前
Linux 17 程序地址空间
linux·运维·服务器·开发语言·数据结构·笔记·排序算法
u01092727143 分钟前
模板元编程调试方法
开发语言·c++·算法
??(lxy)1 小时前
java高性能无锁队列——MpscLinkedQueue
java·开发语言