百度的面试题 合并两个有序的数组

 1 $a = array(1,3,6,10,29,37,44);
 2 $b = array(2,5,14,19,28,55,73);
 3 $c = array();
 4 
 5 $countA = count($a);
 6 $countB = count($b);
 7 
 8 $pointA = 0;
 9 $pointB = 0;
10 
11 while($pointA < $countA || $pointB < $countB){  //结束条件是两个数组的指针都大于数组的数量
12     if($pointA < $countA && $pointB < $countB){  //分三种情况,两个数组都有数据
13         if($a[$pointA] > $b[$pointB]){  //如果a数组中的大于b数组的,那么把小的一个放在c数组,然后b数组中的指针加1
14             $c[] = $b[$pointB];
15             //echo $pointB;
16             $pointB++;
17         }else{
18             $c[] = $a[$pointA];   //否则的话把a数组的中数组放在c数组中,a的指针加1
19             //echo $pointB;
20             $pointA++;
21         }
22     }elseif($pointA >= $countA){  //a数组的没有数据了
23         $c[] = $b[$pointB];
24         $pointB++;
25     }elseif($pointB >= $countB){
26         $c[] = $a[$pointA];
27         $pointA++;
28     }
29 }
30 echo "<pre>";
31 print_r($c);

 

posted @ 2016-03-03 10:52  程序猿101  阅读(486)  评论(0编辑  收藏  举报