有序数组合并问题
2018-08-24 11:21:05 小德 算法 访问次数 451

两个有序数组合并成一个新的有序数组

   
   $a    = [1, 3, 5, 7, 9, 12];
$b    = [2, 4, 6, 8, 10,11,14];
$lenA = count($a);
$lenB = count($b);
$i    = 0;
$j    = 0;
$ret = [];
while ($i < $lenA && $i < $lenB) {
    if ($a[$i] <= $b[$j]) {
        $ret[] = $a[$i++];
    } else {
        $ret[] = $b[$j++];
    }
}
//防止溢出
$max = $a[$i]??0 > $b[$j]??0 ? true:false;
if ($max) {
    while ($j < $lenB) {
        $ret[] = $b[$j++];
    }
    while ($i < $lenA) {
        $ret[] = $a[$i++];
    }

} else {
    while ($i < $lenA) {
        $ret[] = $a[$i++];
    }
    while ($j < $lenB) {
        $ret[] = $b[$j++];
    }
}
var_dump($ret);exit;