亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        PHP中排列組合及性能對(duì)比

        字號(hào):


            排列組合公式/排列組合計(jì)算公式公式P是指排列,從N個(gè)元素取R個(gè)進(jìn)行排列。 公式C是指組合,從N個(gè)元素取R個(gè),不進(jìn)行排列了,但在php中我們可以用N種方法寫出來了,但每一種寫法的性能會(huì)不同,下面我們就來看看吧。
            需求是這樣的:
            找到數(shù)組中所有可能的指定長(zhǎng)度的組合,要求沒有重復(fù)。
            方法一:
            代碼如下:
            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);
            執(zhí)行時(shí)間: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);
            執(zhí)行時(shí)間:710ms。