PHP 插入排序 -- 希尔排序
2024-08-30 04:20:03
1.希尔排序 -- Shell Insertion Sort
时间复杂度:数学家正在勤劳的探索!
适用条件: 直接插入排序的改进,主要针对移动次数的减少,这取决于"增量队列"的取值。适用的情况凭个人感觉用吧,我也不知道,反正,我并不认为自己是一个程序员,喜欢凭感觉行事。
<?php
$arr = [3,4,5,1,11,9,27,27,18,20]; function shellSort(array &$arr,$dt)
{
// 跟增量相关,直接排序的改进版,当倒序时,可以极大减少移动的次数。
$straightInsertFunc = function (array &$arr,$dt)
{
$guild = 0; // 监视哨
array_unshift($arr, $guild);
$arr = array_values($arr);
$len = count($arr); for($j = 1+$dt;$j < $len;$j += 1)
{
if($arr[$j] < $arr[$j-$dt])
{
$arr[0] = $arr[$j];
$arr[$j] = $arr[$j-$dt];
for($k = $j-2*$dt;$k >0 && $arr[0] < $arr[$k];$k -= $dt)
{
$arr[$k+$dt] = $arr[$k];
}
$arr[$k+$dt] = $arr[0];
}
}
array_shift($arr);
}; if($dt <= 0)
{
throw new Exception('Param $dt error!');
} for($i = $dt; $i >= 1; --$i)
{
$straightInsertFunc($arr,$dt);
}
} shellSort($arr,1);
echo implode(',',$arr);
运行结果:
最新文章
- cxf和spring结合
- (转) C++中基类和派生类之间的同名函数的重载问题
- HDU 1875 	畅通工程再续 (prim最小生成树)
- php通过正则从字符串中获取所有图片url地址
- 【JavaScript】JavaScript Promise 探微
- [Everyday Mathematics]20150207
- js实现中文简繁切换效果
- itext poi 学习之旅 (2)创建excel
- jquery更新后怎样在一个站点中使用两个版本号的jQuery
- Arduino红外遥控系列教程2013——红外转码
- Modular Inverse(模逆元,扩展欧几里德)
- border-sizing属性
- Mybatis 入门之resultMap与resultType解说实例
- Spring MVC 知识点记忆
- 无状态shiro认证组件(禁用默认session)
- DLL中获取主程序句柄
- Golang实现一个密码生成器
- log4j.properties配置文件详解
- OpenFileDialog 打开文件对话框
- 在Windows控制台应用程序中使用CString
热门文章
- Tempter of the Bone(DFS+剪枝)
- CentOS7.2防火墙配置
- charles 高亮Hosts
- 004:CSS三大重点之二:浮动(拖标、不占位置、转行内块)
- NPOI导出2007格式报错:文件损坏
- [LeetCode] 由 “找零钱"; 所想
- C# 反射基础用法
- 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU硬件那些事(1)- 官方EVK简介
- ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介
- Graphlab create的基本使用