2个已经排序好的数组交集
$a
=
array
(
'
1
'
,
'
2
'
,
'
3
'
,
'
4
'
,
'
22
'
);
$b = array ( ' 1 ' , ' 3 ' , ' 4 ' , ' 11 ' , ' 22 ' , ' 23 ' );
f( $a , $b , 5 , 6 , $t );
print_r ( $t );
function f( & $a , & $b , $n , $m , & $t ){
$i = 0 ; $j = 0 ;
while ( $i < $n && $j < $m ){
if ( $a [ $i ] == $b [ $j ]){
echo $a [ $i ] . " " ; // 交集
$t [] = $a [ $i ++ ];
$t [] = $b [ $j ++ ];
} elseif ( $a [ $i ] > $b [ $j ]){
$t [] = $b [ $j ++ ];
} else {
$t [] = $a [ $i ++ ];
}
}
while ( $i < $n ){
$t [] = $a [ $i ++ ];
}
while ( $j < $m ){
$t [] = $b [ $j ++ ];
}
}
$b = array ( ' 1 ' , ' 3 ' , ' 4 ' , ' 11 ' , ' 22 ' , ' 23 ' );
f( $a , $b , 5 , 6 , $t );
print_r ( $t );
function f( & $a , & $b , $n , $m , & $t ){
$i = 0 ; $j = 0 ;
while ( $i < $n && $j < $m ){
if ( $a [ $i ] == $b [ $j ]){
echo $a [ $i ] . " " ; // 交集
$t [] = $a [ $i ++ ];
$t [] = $b [ $j ++ ];
} elseif ( $a [ $i ] > $b [ $j ]){
$t [] = $b [ $j ++ ];
} else {
$t [] = $a [ $i ++ ];
}
}
while ( $i < $n ){
$t [] = $a [ $i ++ ];
}
while ( $j < $m ){
$t [] = $b [ $j ++ ];
}
}