如何合并两个有序数组?

PHP 算法面试题
1
0
分享
推荐答案
展示答案

<?php $array1 = [1, 3, 5, 7, 9]; $array2 = [2, 4, 6, 8, 10]; $array = merge_sorted_array($array1, $array2); //Output:[1,2,3,4,5,6,7,8,9,10] print_r($array); function merge_sorted_array($array1, $array2) {     $m = count($array1);     $n = count($array2);     //合并后数组的尾部     $tail = $m + $n - 1;     //将array1的长度扩充为$m+$n     $array1 = $array1 + array_fill($m, $n, NULL);     //$array1的尾部     $i = $m - 1;     //$array2的尾部     $j = $n - 1;     //将$i和$j向前移动,依次处理     for (; $i >= 0 && $j >= 0; $tail--) {         //取较大值,放在尾部         if ($array1[$i] >= $array2[$j]) {             $array1[$tail] = $array1[$i];             $i--;         } else {             $array1[$tail] = $array2[$j];             $j--;         }     }     //如果$array2还未处理完,则将$array2的剩余数据拼接起来     while ($j >= 0) {         $array1[$tail] = $array2[$j];         $tail--;         $j--;     }     return $array1; }

答案已隐藏