这次给大家带来PHP希尔排序案例分析,使用PHP希尔排序案的注意事项有哪些,下面就是实战案例,一起来看一下。
算法实现:
<?php//希尔排序(对直接插入排序的改进)function ShellSort(array &$arr){ $count = count($arr); $inc = $count; //增量 do { //计算增量 //$inc = floor($inc / 3) + 1; $inc = ceil($inc / 2); for ($i = $inc; $i < $count; $i++) { $temp = $arr[$i]; //设置哨兵 //需将$temp插入有序增量子表 for ($j = $i - $inc; $j >= 0 && $arr[$j + $inc] < $arr[$j]; $j -= $inc) { $arr[$j + $inc] = $arr[$j]; //记录后移 } //插入 $arr[$j + $inc] = $temp; } //增量为1时停止循环 } while ($inc > 1);}//$arr = array(9,1,5,8<strong>2本文来源gaodaima#com搞(代@码$网6</strong><pre>搞gaodaima代码
,3,7,4,6,2);$arr = array(49,38,65,97,76,13,27,49,55,04);ShellSort($arr);var_dump($arr);
运行结果:
array(10) { [0]=> int(4) [1]=> int(13) [2]=> int(27) [3]=> int(38) [4]=> int(49) [5]=> int(49) [6]=> int(55) [7]=> int(65) [8]=> int(76) [9]=> int(97)}
复杂度分析:
通过以上代码的分析,相信大家已经有些明白,希尔排序的关键并不是随便分组后各自排序,而是将相隔某个“增量”的记录组成一个子序列,实现跳跃式的移动,使得排序的效率提高。
最坏的情况下时间复杂度是 O(n^2)。
希尔排序是不稳定排序。
相信看了本文案例你已经掌握了方法,更多精彩请关注搞代码其它相关文章!
推荐阅读:
PHP快速排序算法使用步骤详解
PHP生成推广海报步骤详解
以上就是PHP希尔排序案例分析的详细内容,更多请关注搞代码gaodaima其它相关文章!