php-希尔排序

奥比中光Dabai深度相机SDK在Ubuntu22.04的兼容性安装指南 本文详细指导如何在Ubuntu22.04系统上安装奥比中光Dabai深度相机的SDK。针对新旧版本不兼容的核心问题,重点推荐使用经过验证的v1.10.18版本SDK,并提供了从系统依赖检查、SDK下载安装、Python环境配置到编译测试的完整步骤,帮助用户成功解决安装难题并实现相机驱动。 阅读详情
<?php
/*
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因 DL.Shell于 1959 年提出而得名。
该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的。
以 n=10 的一个数组 49, 38, 65, 97, 26, 13, 27, 49, 55, 4 为例第一次 gap = 10 / 2 = 5 
	49 38 65 97 26 13 27 49 55 4
	1A             1B
 	   2A 			  2B
 		  3A             3B
			 4A				4B
 				5A 				5B
1A,1B,2A,2B 等为分组标记,数字相同的表示在同一组,大写字母表示是该组的第几个元素,每次对同一组的数据进行直接插入排序。即分成了五组(49, 13) (38, 27) (65, 49) (97, 55) (26, 4)这样每组排序后就变成了(13, 49) (27, 38) (49, 65) (55, 97) (4, 26),下同。

第二次 gap = 5 / 2 = 2
排序后
	13 27 49 55 4 49 38 65 97 26
	1A 	  1B 	1C 	 1D    1E
	   2A 	 2B   2C 	2D 	  2E

第三次 gap = 2 / 2 = 1
	4 26 13 27 38 49 49 55 97 65
	1A 1B 1C 1D 1E 1F 1G 1H 1I 1J

第四次 gap = 1 / 2 = 0 排序完成得到数组:
	4 13 26 27 38 49 49 55 65 97
 */

function shellsort($a) {
	$n = count($a);
	//gap 步长
	for ($gap = $n / 2; $gap > 0; $gap /= 2){
		//分组
		for ($i = $gap; $i < $n; $i++){
			//每组排序
			for ($j = $i - $gap; $j >= 0 && $a[$j] > $a[$j + $gap]; $j -= $gap){
				$tmp = $a[$j];
				$a[$j] =  $a[$j + $gap];
				$a[$j + $gap] = $tmp;
			}
		}
	}
	return $a;
}

$arr = [1,21,2,3,333,4,23];

$res = shellsort($arr);

print_r($res);
[Bug已解决] CUDA error 尽管 CUDA 可用且 GPU 受支持-通用排查 RuntimeError 解决方案 阅读详情

相关推荐

EnlightenGAN训练复现记录

记录EnlightenGAN过程中的问题和解决方式。提示:以下是本篇文章正文内容,下面案例可供参考。

L_27N113E的博客 3846

python内置函数降序-python 使用内置函数sorted对各种数据类型进行排序

python有两个内置的函数用于实现排序,一个是list.sort()函数,一个是sorted()函数。区别1:list.sort()函数只能处理list类型数据的排序;sorted()则可以处理多种类型数据的排序。区别2:list.sort()会修改原来的list为排序后的结果;sorted()不会修改原来的数据,只是返回一个排序后的对象。下面来动手写点代码进行测试:list进行简单的排序1 >...

weixin_39553776的博客 2261

准静态电磁场

叠加法 缺点:对于连续分布的电荷,叠加法的计算比较困难 虚位移法 概念 广义坐标:确实系统中导体形状、尺寸与位置的一组独立几何量。 广义力:企图改变某一广义坐标的力。 功:广义力乘上由它引起的广义坐标的改变量。 公式 ...

qq_35912930的博客 1860

python中的排序(升序和降序)

用sort实现升序和降序

qq_44380224的博客 5532

染色体外环状DNA:肿瘤研究新方向

染色体外环状DNA(ecDNA)是癌症中活化原癌基因扩增的主要方式。区别于常染色体,这类生物大分子主要以环状的形式存在于细胞核当中,长度分布在103-106数量级,无中心粒。ecDNA序列中包含一个或者多个基因与调控元件,结构开放,转录活性强,相比于在棒状染色体结构基因,ecDNA的生物功能活性更强。癌症中,成环的基因区域拷贝数往往增高,而超过一半的高拷贝数事件是ecDNA驱动生成。...

blackjimmy的博客 765

ArcGIS+PLUS+InVEST三件套:从零搞定生态系统服务模拟预测(附完整数据包)

本文详细介绍了如何整合ArcGIS、PLUS模型和InVEST模型,构建一套完整的生态系统服务模拟预测工作流。内容涵盖从统一数据预处理、PLUS模型多情景模拟,到InVEST模型量化评估的全过程,并提供了关键脚本和避坑指南,旨在帮助研究者和从业者高效解决土地利用变化与生态系统服务评估结合的实际难题。

weixin_42522857的博客 139

PHP 排序算法(五) 希尔排序

希尔排序 希尔排序又称缩小增量排序,是指将无序序列,按照增量的不同大小,分成若干个序列,然后对子序列进行插入排序,本质上就是插入排序。 思路: 我们先确定增量,一般初始增量我们都设置为数组长度的一半(向下取整); 我们根据增量,将数组分成了若干个子序列: 分别对这四个子序列进行插入排序: 然后再一次遍历,增量设置为原先的一半,也就是继续除以2(向下取整),得出的序列: 分别对这两个序列进行插入排序,结果为: 再将增量除以2得到新增量为1,便...

Forever 流伤的博客 455

SAP PS模块实战指南:从项目启动到结算的全流程解析

本文详细解析SAP PS模块在项目管理中的全流程应用,从项目启动到结算的关键操作与实战技巧。通过WBS设计、预算控制和资源调配等核心功能,帮助管理者高效协调项目进度与成本,特别适用于交付型和成本型项目管理。掌握PS模块能显著提升项目管理效率与精准度。

weixin_42553471的博客 447

【算法基础】希尔排序解析

希尔排序由希尔(Donald Shell)在 1959 年所发表的论文“A high-speed sorting procedure”中提出,因此便以其名字进行命名。希尔排序的基本思想是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。

NoBack7--For the dream 3926

微信小程序审核避坑指南:巧用 wx.getAccountInfoSync 实现审核与线上环境无感切换

本文详细介绍了如何利用`wx.getAccountInfoSync`API实现微信小程序审核与线上环境的无感切换。通过环境识别技术和动态渲染架构设计,开发者可以优雅解决审核资质门槛问题,同时保持生产环境的完整用户体验。文章包含组件化实现、全局状态管理等实用方案,帮助开发者提升审核通过率。

weixin_30527423的博客 259

逆向工程师视角:拆解DataDome滑块验证码的3层防护机制与绕过思路

本文从逆向工程师视角,深入剖析DataDome滑块验证码的三层核心防护机制。第一层通过动态加密参数实现会话绑定与抗重放;第二层采集TLS指纹、鼠标轨迹动力学等多维行为数据进行一致性验证;第三层则是基于机器学习的后端异步风险决策引擎。文章不仅拆解了其技术原理,更分享了模拟、钩取等超越单纯工具调用的底层分析与绕过思路。

f6g7h8i9j的博客 730

排序算法 - 希尔排序

希尔排序(Shell Sort)也叫,是基于插入排序的一种排序算法。它通过将待排序数据按某个增量分为若干组,对每组数据进行插入排序,随着增量逐渐减小,每组包含的元素越来越多,当增量减至1时,整个数据合成一组,再进行插入排序,最终完成排序。希尔排序的核心思想是使数组中任意间隔为的元素都是有序的,这样的数组被称为h有序数组。

originalHSL的博客 676

VMware ESXi +DELL虚拟化存储磁盘容量处于紧急状态问题的处理

1、环境介绍 exsi server两台(DELL R730 ): 192.168.3.206 VMware EXSi6.5 192.168.3.207 VMware EXSi6.5 磁盘存储柜一台(DELL SC2000): 192.168.3.208 2、故障处理 由于前期规划的卷空间过大,虚拟机文件逐年增大以后,造成卷的磁盘占用过与整个磁盘空间的容量,虚拟化平台可用容量爆掉,DELL SC2000自动切换到紧急状态,禁止所有磁盘I/O,exsi主机上的虚拟机无法开机 首先,安装

wolf1105的博客 3530

php 希尔排序

/* 1、间隔为4,每间隔4个人,这些人排成一组 2、在每一组的组内进行排序,数组交换,比大小 3、重新设置间隔分组,例如 黄色一组 ,黑色一组 、在进行组内排序交换(用的是插入法) 重点、分组的间隔都会越来越小,最后变成1,如果变成1的时候,说明已变成了一组 排序用的是插入排序 分组间隔不停的减少,不停的分组,不停做组内的排序最终变为1为止 */ 希尔排序算法的php实现2 php实现希尔排序 ...

我只是个小学生 能力有限 一直抱着学习的态度 239

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

php 希尔排序算法

希尔排序 希尔排序(Shell’s Sort)是 插入排序 的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序的最好时间复杂度O(n)和最坏时间复杂度O(n2)。想要理解希尔排序,首先得理解插入排序。 图解参考: 参考文章: https://www.cnblogs.com/chengxiao/p/6104371.html https://zhuanlan.zhihu.com/p/56836177 以下是希尔排序的php版本

凄魅旋律 252

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

PHP-希尔排序

function shell(array $arr,array $gaps=[]){ if(!$arr) return $arr; //测试用,默认指定间隔数组,正常传入即可 $gaps = [10,5,2,1]; $l_g = count($gaps); $l = count($arr); for($i=0;$i<$l_g;$i+...

技无涯的博客 253

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

希尔排序算法的php实现

  虽然现在各种程序语言都有其各自强大的排序库函数,但是这些底层实现也都是利用这些基础或高级的排序算法。   理解这些复杂的排序算法还是很有意思的,体会这些排序算法的精妙~   一、希尔排序(shell sort):希尔排序是基于插入排序的,区别在于插入排序是相邻的一个个比较(类似于希尔中h=1的情形),而希尔排序是距离h的比较和替换。 希尔排序中一个常数因子n,原数组被分成各个小...

165

php实现希尔排序

PHP实现希尔排序希尔排序是在插入排序的基础上改进的版本,效率更高一点。它是以一个增量来组成序列进行排序的。直接上代码function shellSort($arr) { $len = count($arr); $count = $len; //数组长度 do { $len = intval($len /3) + 1;//以3为增量,具体计算方法 2^t-k+1 -1  (0&lt;=k&lt;...

qq_31169667的博客 353

希尔排序-PHP版

<?php function shellSort($arr) :Array { if($arr == null || count($arr) <=1){ return $arr; } //希尔排序 升序 for($d = floor(count($arr)/2);$d>0;){ //$d:增量 7 3 1 ech...

代码小白的博客 242

PHP排序算法系列:希尔排序

希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。原理先将整个待排元素序列分割成若干个子序列(由相隔某个“增量(gap)”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。希尔排序过程PHP代码实现function

qq_32300363的博客 2036

php实现希尔排序(总结)

php实现希尔排序(总结) 一、总结 1、希尔排序的算法思路:分组排序,缩小增量排序,插入排序 2、算法思路: 循环非常好写 有几次gap:log2(n) 每次gap有几组:gap组 每组有几个元素:以gap做增加量就知道了 然后每组的几个元素做简单插入排序就好 二、希尔排序 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Dimin...

weixin_30708329的博客 91

PHP 希尔排序

希尔排序平均时间复杂度O(n^1.3),最好情况O(n),最坏情况O(n^2) 1 &lt;?php 2 #希尔排序 3 function shellSort(Array $arr) { 4 $k = initStep(count($arr)); 5 $step = pow(2, $k) - 1; 6 ...

weixin_33858485的博客 159

PHP基础排序算法(五)希尔排序

PHP基础排序算法之希尔排序 <?php /** * @希尔排序 * @排序思路: * 严格来说基于插入排序的思想,也叫缩小增量排序或Shell排序。 * @流程: * (1)将有n个元素的数组分成n/2个数字序列,第1个数据和n/2+1个数据为一对,...... * (2)一次循环使每个序列对排好顺序。 * (3)然后,再变为n/4个序

追风的猪 900

希尔排序学习及PHP实现

在看希尔排序时比较难以理解,并且没有看懂是如何排出来的https://visualgo.net/zh 也没有这种排序于是使用php写了代码实现并将每一步打印出来,总算看明白排序的过程了虽然还是不懂这个原理 上代码 <?php function ss($arr){ $n=count($arr); $h=1; while($h<$n/3)$h=3*$h+1; ...

weixin_33878457的博客 111

希尔排序 php实现

<?php /* * 希尔排序 */ set_time_limit(0); header("Content-Type:text/html;charset=utf-8"); $dataLen=20001; $data=array(); $i=0; //make data srand(time()); for($i=0; $i < $dataL...

weixin_34417183的博客 109
上一篇: php-直接插入排序
下一篇: php---归并排序
龘麤三思
博客等级 码龄10年 11粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值