加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

借助珠算法对PHP数组进行排序

发布时间:2022-07-12 12:40:35 所属栏目:PHP教程 来源:互联网
导读:首先给大家简单介绍下什么是珠算法? 珠算法也叫珠排序,是一种自然排序算法,由Joshua J. Arulanandham, Cristian S. Calude 和 Michael J. Dinneen 在2002年发展而来,并且在欧洲理论计算机协会(European Association for Theoretical Computer Science,
  首先给大家简单介绍下什么是珠算法?
 
  珠算法也叫珠排序,是一种自然排序算法,由Joshua J. Arulanandham, Cristian S. Calude 和 Michael J. Dinneen 在2002年发展而来,并且在欧洲理论计算机协会(European Association for Theoretical Computer Science,简称EATCS)的新闻简报上发表了该算法。
 
  珠排序的数字和模拟硬件实现都可以实现 O(n );但是,该算法的实现在软件中往往要慢得多,只能用于对正整数列表进行排序。
 
  在简单了解该算法之后,我们直接上代码:
 
  
 
 
  <?php
 
  function columns($uarr)
 
  {
 
      $n=$uarr;
 
      if (count($n) == 0)
 
          return array();
 
      else if (count($n) == 1)
 
          return array_chunk($n[0], 1);
 
      array_unshift($uarr, NULL);
 
      $transpose = call_user_func_array('array_map', $uarr);
 
      return array_map('array_filter', $transpose);
 
  }
 
  function bead_sort($uarr)
 
  {
 
      foreach ($uarr as $e)
 
          $poles []= array_fill(0, $e, 1);
 
      return array_map('count', columns(columns($poles)));
 
  }
 
  echo '原始数组: '.'
 
  ';
 
  var_dump(array(5,3,1,3,8,7,4,1,1,3));
 
  echo '
 
  '.'珠排序后 : '.'
 
  ';
 
  var_dump(bead_sort(array(5,3,1,3,8,7,4,1,1,3)));
 
  运行结果如:
 
  b216d38e5bc7edce70e6070db77dd90.png
 
  在上述代码中给大家介绍几个关键的函数:
 
  1、array_unshift()函数:用于向数组插入新元素。新数组的值将被插入到数组的开头。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。该函数会返回数组中元素的个数。
 
  2、call_user_func_array:调用回调函数,并把一个数组参数作为回调函数的参数,语法是“call_user_func_array(callable $callback, array $param_arr): mixed”,表示把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读