当前位置: 首页 > news >正文

52、PHP 实现选择排序

题目: PHP 实现选择排序

描述:

  • 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。
  • 所有距离为dl的倍数的记录放在同一个组中。
  • 先在各组内进行直接插人排序;
  • 然后,取第二个增量d2<d1重复上述的分组和排序,
  • 直至所取的增量dt=1(dt<dt-l<…<d2<d1),
  • 即所有记录放在同一组中进行直接插入排序为止。
  • 该方法实质上是一种分组插入方法。
  • 希尔排序是不稳定的
function shellSort(array $list)
{$length = count($list);$step = 2;$gap = intval($length/$step);while($gap > 0){for($gap_i = 0; $gap_i < $gap; $gap_i++){for($i = $gap_i; $i < $length; $i+=$gap){$temp = $list[$i];for($j = $i - $gap; $j >= 0; $j-=$gap){if($temp < $list[$j]){$list[$j+$gap] = $list[$j];$list[$j] = $temp;}else{break;}}}}}return $list;
}$list = array(3, 6, 2, 4, 10, 1 ,9, 8, 5, 7);
var_dump(shellSort($list));
/*** 第1趟, gap = 5* 分成了两个数组:(对应下标元素进行比较)* (3, 6, 2, 4, 10) (1, 9, 8, 5, 7)* 交换后的过程:* (1, ...) (3, ...)* (1, 6, ...) (3, 9, ...)* (1, 6, 2, ...) (3, 9, 8, ...)* (1, 6, 2, 4, ...) (3, 9, 8, 5, ...)* (1, 6, 2, 4, 7) (3, 9, 8, 5, 10)* 第2趟,gap = 2* 分成了五个数组* (1, 6) (2, 4) (7, 3) (9, 8) (5, 10)* 交换过程* (1, ...) (2, ...) (5, ...) (7, ...) (9, ...)* (1, 3) (2, 4) (5, 6) (7, 8) (9, 10)* 第3趟, gap = 1* 元素比较* 1, 2, 3, 4, 5, 6, 7, 8, 9, 10*/

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 点脂成金携手北京新颜兴医疗美容医院,共启战略合作新篇章
  • Android 10.0 Launcher 启动流程
  • 开源消息队列比较
  • 【前端 15】Vue生命周期
  • 数据库实验:SQL Server基本表单表查询
  • SpringBoot集成Sharding-JDBC实现分库分表
  • 【计算机网络】TCP协议详解
  • linux环境下重新编译opencv的安卓动态链接库opencv_java4.so文件
  • TransmittableThreadLocal跟InheritableThreadLocal使用
  • 搭建自己的金融数据源和量化分析平台(一):系统架构设计
  • 【初阶数据结构篇】顺序表的实现(赋源码)
  • Mysql中DML的几种操作
  • 【React】详解“最新”和“最热”切换与排序
  • 实战解读:Llama Guard 3 Prompt Guard
  • 【机器学习】探索图神经网络 (GNNs): 揭秘图结构数据处理的未来
  • __proto__ 和 prototype的关系
  • C++入门教程(10):for 语句
  • Codepen 每日精选(2018-3-25)
  • github指令
  • IOS评论框不贴底(ios12新bug)
  • JS数组方法汇总
  • magento 货币换算
  • php面试题 汇集2
  • PHP那些事儿
  • rabbitmq延迟消息示例
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • SwizzleMethod 黑魔法
  • vagrant 添加本地 box 安装 laravel homestead
  • Webpack 4 学习01(基础配置)
  • 高性能JavaScript阅读简记(三)
  • 基于Android乐音识别(2)
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 前端代码风格自动化系列(二)之Commitlint
  • 让你的分享飞起来——极光推出社会化分享组件
  • 学习JavaScript数据结构与算法 — 树
  • 移动端 h5开发相关内容总结(三)
  • 阿里云服务器如何修改远程端口?
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (八)Flask之app.route装饰器函数的参数
  • (第27天)Oracle 数据泵转换分区表
  • (第二周)效能测试
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .net core 6 redis操作类
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET 使用配置文件