• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP希尔排序案例分析

php 搞代码 3年前 (2022-01-22) 13次浏览 已收录 0个评论

这次给大家带来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其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP希尔排序案例分析
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址