PHP 插入排序 - 希尔排序

Posted 伟洪winnie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 插入排序 - 希尔排序相关的知识,希望对你有一定的参考价值。

<?php
function microtime_float(){ list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec);}
//冒泡, 插入排序, 每次交换消除一个逆序对. 要提高算法的效率, 我们必须每次消除不止一个逆序对, 每次交换相隔较远的两个元素//TODO : 插入排序 - 希尔排序 (希尔增量 L/2)//还有一些其它的增量: Hibbard增量:{1, 3, ..., 2^k-1} ...function ShellSort($data, $L){ $time_start = microtime_float(); for ($i = floor($L / 2); $i > 0; $i = floor($i / 2)) { //增量 for ($j = $i; $j < $L; $j++) { //插入排序 for ($k = $j; $k >= $i && $data[$k] < $data[$k - 1]; $k -= $i) { list($data[$k], $data[$k - 1]) = [$data[$k - 1], $data[$k]]; } } } $time_end = microtime_float();
echo "ShellSort - Time:" . ($time_end - $time_start) . "s" . "<br/>"; return $data;}

function main(){ //TODO : 生成数据 $number = []; for ($i = 0; $i < 10000; $i++) { $number[] = rand(0, 1000000000); }
// echo "<pre>";// print_r($number);// print_r(ShellSort($number, count($number)));
ShellSort($number, count($number));}
main();


以上是关于PHP 插入排序 - 希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

PHP 插入排序 -- 希尔排序

PHP数据结构插入类排序:简单插入希尔排序

PHP数据结构-插入类排序:简单插入希尔排序

PHP希尔(Shell)排序算法的实现(代码详解)

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

《算法》笔记 3 - 选择排序插入排序希尔排序