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

 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);

 

转载于:https://www.cnblogs.com/etata/p/5237705.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值