思路:取出数组第一个元素对比另外一个数组的第一个元素,如果相同,得到交集元素,两个数组下标各自+1,如果第一个小于第二个,第二个下标不变,第一个数组下标+1,如果第一个大于第二个,第一个下标不变,第二个下标+1。
代码(PHP):
function array_sort_intersect($a, $b)
{
$same = [];
$i = 0;
$ak = 0;
while ($ak < count($a) && $i < count($b)) {
if ($a[$ak] < $b[$i]) {
$ak += 1;
}elseif ($a[$ak] == $b[$i]) {
$same[] = $b[$i];
$ak += 1;
$i += 1;
}else{
$i += 1;
}
}
return $same;
}
$a = [1, 2, 3, 4, 5, 10, 23, 89, 100];
$b = [2, 4, 34, 89, 99, 100];
var_dump($a, $b);