PHP_PHP チュートリアルでの順列、組み合わせ、パフォーマンスの比較

WBOY
リリース: 2016-07-13 10:13:04
オリジナル
933 人が閲覧しました

PHPにおける順列、組み合わせ、性能比較

順列と組み合わせの公式/順列と組み合わせの計算式 P式とは、N個の要素からR個の要素を取り出して並べる順列のことを言います。 式 C は N 個の要素から R 個の要素を並べ替えることを指します。ただし、PHP では N 通りの書き方が可能ですが、それぞれの書き方で性能が異なります。

要件は次のとおりです:

配列内の指定された長さの可能な組み合わせをすべて重複なく検索します。

方法 1:

コードは次のとおりです

関数 getCombinationToString($arr,$m){
$result = array();
if ($m ==1){
$arr を返します;
}

if ($m == count($arr)){
$result[] = implode(',' , $arr);
$result を返します;
}

$temp_firstelement = $arr[0];
unset($arr[0]);
$arr = array_values($arr);
$temp_list1 = getCombinationToString($arr, ($m-1));

foreach ($temp_list1 を $s){
$s = $temp_firstelement.','.$s;
$result[] = $s;
}
unset($temp_list1);

$temp_list2 = getCombinationToString($arr, $m);
foreach ($temp_list2 を $s){
$result[] = $s;
}
unset($temp_list2);

$result を返します;
}
$arr = 配列(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);

実行時間: 238ミリ秒。

方法 2:

コードは次のとおりです

関数 getCombinAryByNum( $arr, $num,$t=array()) {
if ($num == 0) {
配列を返す($t);
}
$r = 配列();
for ($i=0,$l=count($arr); $i $tmp = getCombinAryByNum( array_slice($arr, $i+1, $l, false), $num-1,array_merge($t, array($arr[$i])));
$r = array_merge($r, $tmp);
}
$r を返します;
}

$arr = 配列(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);

実行時間:710ミリ秒。

www.bkjia.com本当http://www.bkjia.com/PHPjc/918724.html技術記事 PHPにおける順列と組み合わせと性能比較 順列と組み合わせの公式・順列と組み合わせの計算式 P公式とは、N個の要素からR個の要素を取り出して並べる順列のことを指します。 式 C は、N 個の要素から R 個の要素を取り出す、そのままの組み合わせを指します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート