实现合并有序数组
- 一种使用PHP内置函数进行实现
- 一种通过循环进行实现
内置函数
$a = array_unique(array_merge($map,$map1));
sort($a);
解释下函数的作用
- array_merge(a,b,c) 把多个数组进行合并
- array_unique(a) 把数组里面相同的数值去重
- sort(a) 把数组排序
循环实现
function merge($map, $map1) {
$ans = [];
$len = count($map);
$len1 = count($map1);
$a = $b = 0;
while ($len != $a && $len1 != $b) {
if ($map[$a] > $map1[$b]) {
$ans[] = $map1[$b];
$b++;
} else if ($map[$a] < $map1[$b]) {
$ans[] = $map[$a];
$a++;
} else {
$ans[] = $map1[$b];
$b++;
$a++;
}
}
if ($len == $a) {
for ($i = $b; $b < $len1; $b++) {
$ans[] = $map1[$b];
}
} else {
for ($i = $a; $a < $len; $a++) {
$ans[] = $map[$a];
}
}
return $ans;
}
整体思路
- 创建一个新的数组。
- 获取两个数组的长度,并给每个数组设置一个从0开始的索引变量。
- 然后对两个数组的当前索引对应的值进行比较,大的放入新的数组,并给该索引+1,相同则把相同值放入数组,两个索引都+1。
- 当某个索引值等于对应的长度时,则表明其中一个已经遍历完,退出循环。
- 然后把另外一个数组剩余的数值遍历进数组,即完成
时间复杂度
- 内置函数时间复杂度 不了解内部实现结构 所以这里就 ?
- 循环时间复杂度 o(m+k)