52、PHP 实现选择排序

embedded/2024/10/18 8:27:20/

题目: PHP 实现选择排序

描述:

  • 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。
  • 所有距离为dl的倍数的记录放在同一个组中。
  • 先在各组内进行直接插人排序;
  • 然后,取第二个增量d2<d1重复上述的分组和排序,
  • 直至所取的增量dt=1(dt<dt-l<…<d2<d1),
  • 即所有记录放在同一组中进行直接插入排序为止。
  • 该方法实质上是一种分组插入方法。
  • 希尔排序是不稳定的
php">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*/

http://www.ppmy.cn/embedded/88967.html

相关文章

深入探究 Vue.js 高级技术:从响应式系统到高效组件设计的实战指南

这里有一些实用的 Vue.js 高级示例&#xff0c;涵盖了前面提到的高级知识点&#xff0c;适合在实际项目中应用&#xff1a; 1. 自定义响应式数据 使用 Vue 3 的 customRef API 创建一个自定义的响应式输入框&#xff0c;带有防抖功能。 import { customRef } from vue;funct…

使用Pandas将数据写入同一个Excel的不同sheet中

在使用 pandas 库处理 Excel 文件时&#xff0c;需要将数据写入到同一个 Excel 文件中的不同工作表&#xff08;sheet&#xff09;中。pandas 提供了一个方便的方法通过 ExcelWriter 对象来实现这一点。以下是一个示例&#xff0c;展示了如何使用 pandas 将数据写入到不同的 sh…

转世重生之当程序员从零开始,不可错过的Jupyter Notebook的详细安装教程 ♪(^∇^*)

一、前期准备工作 &#x1f609; Jupyter Notebook是基于Python的&#xff0c;因此首先需要确保您的计算机上安装了Python。建议安装Python 3.7或更高版本。Python下载网站链接&#xff1a;Python。 pip是Python的包管理工具&#xff0c;用于安装和管理Python包。在大多数情况下…

秒懂Linux之编写小程序——进度条

目录 一.前文摘要 二.进度条编写 三全部代码&#xff08;非Linux环境下测试&#xff09; 一.前文摘要 在开始编写之前我们先来学习一些后面会用到的知识点~ 测试结果发现&#xff0c;Sleep无作用&#xff0c;编译完会立刻打印~ 再来看另一个测试~我们同样没有换行&#xff0c…

【gpt预测与推理区别】

推理时不能并行计算所有位置的主要原因在于生成文本的过程是自回归的&#xff0c;也就是说&#xff0c;生成每个新的单词都依赖于之前已经生成的单词。这个过程需要一步一步地进行&#xff0c;因为每一步的输出会成为下一步的输入。下面是对这个过程的详细解释&#xff1a; 自…

面试经典 222. 完全二叉树的节点个数

二叉树我最近刷的特别多&#xff0c;差不多快刷完了&#xff0c;但是有一种题型差点给我忽略了&#xff0c;那就是完全二叉树&#xff0c;这也是一个很重要的题型&#xff0c;今天刚好有一道题目可以来复习一下完全二叉树的特性 题目链接如下&#xff1a;https://leetcode.cn/…

笑谈“八股文”,人生不成文

一、“八股文”在实际工作中是助力、阻力还是空谈&#xff1f; 作为现在各类大中小企业面试程序员时的必问内容&#xff0c;“八股文”似乎是很重要的存在。但“八股文”是否能在实际工作中发挥它“敲门砖”应有的作用呢&#xff1f;有IT人士不禁发出疑问&#xff1a;程序员面试…

Oracle(40)什么是异常处理(Exception Handling)?

异常处理&#xff08;Exception Handling&#xff09;是在程序运行过程中处理意外情况的机制。这些意外情况可能是运行时错误、逻辑错误或其他不可预见的问题。通过异常处理&#xff0c;程序可以捕获并处理这些错误&#xff0c;从而防止程序崩溃&#xff0c;并提供有意义的错误…