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

hphper 发布于 2015/03/11 20:53
阅读 2K+
收藏 0

比如2个都是从低到高的数组,合并成一个有序数组 也是从低到高,每个数组只扫描一次,

$a=array(2,5,7,9);

$b=array(3,4,8,10,11);

最快得到

array(2,3,4,5,7,8,9,10,11)

怎么最快呢?

加载中
1
CoserSeu
CoserSeu
int i=0;int j=0;
int[] array = new int[a.length + b.length];
while(i<a.length && j<b.length){
array[i+j] = a[i]<b[j]?a[i++]:b[j++];
}
while(i<a.length){
array[i+j] = a[i++]
}
while(j<b.length){
array[i+j] = b[j++]
}



张亦俊
张亦俊
这个才是正解,楼上楼下都什么玩意,一个线性时间的算法非得整出排序来了
0
eechen
eechen
$a = array(2,5,7,9);
$b = array(3,4,8,10,11);
$c = array_merge($a, $b);
sort($c);
print_r($c);

hphper
hphper
如果数组长度很大,merge会不会浪费呢,?2个原来的数组是有序的
0
fengyqf
fengyqf

php的数值(包括数组)操作,速度是很快的,基本不可能是性能瓶颈;这方面做优化,性价比不高。

当然,如果是为了实现算法除外。

返回顶部
顶部