PHP中排列组合及性能对比
来源: 阅读:47251 次 日期:2014-12-10 14:09:49
温馨提示: 小编为您整理了“PHP中排列组合及性能对比”,方便广大网友查阅!

排列组合公式/排列组合计算公式公式P是指排列,从N个元素取R个进行排列。 公式C是指组合,从N个元素取R个,不进行排列了,但在php中我们可以用N种方法写出来了,但每一种写法的性能会不同,下面我们就来看看吧。

需求是这样的:

找到数组中所有可能的指定长度的组合,要求没有重复。

方法一:

代码如下:

function getCombinationToString($arr,$m){

$result = array();

if ($m ==1){

return $arr;

}

if ($m == count($arr)){

$result[] = implode(',' , $arr);

return $result;

}

$temp_firstelement = $arr[0];

unset($arr[0]);

$arr = array_values($arr);

$temp_list1 = getCombinationToString($arr, ($m-1));

foreach ($temp_list1 as $s){

$s = $temp_firstelement.','.$s;

$result[] = $s;

}

unset($temp_list1);

$temp_list2 = getCombinationToString($arr, $m);

foreach ($temp_list2 as $s){

$result[] = $s;

}

unset($temp_list2);

return $result;

}

$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18);

$t = getCombinationToString($arr, 6);

var_dump($t);

执行时间:238ms。

方法二:

代码如下:

function getCombinAryByNum( $arr, $num,$t=array()) {

if ($num == 0) {

return array($t);

}

$r = array();

for ($i=0,$l=count($arr); $i <= $l-$num; $i++) {

$tmp = getCombinAryByNum( array_slice($arr, $i+1, $l, false), $num-1,array_merge($t, array($arr[$i])));

$r = array_merge($r, $tmp);

}

return $r;

}

$arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18);

$numum = 6;

$ss = getCombinAryByNum($arr,$numum);

var_dump($ss);

执行时间:710ms。

更多信息请查看IT技术专栏

更多信息请查看网络编程
手机网站地址:PHP中排列组合及性能对比
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map