- /**
- * 给数组插入零的成员函数
- * 描述:
- * $idx为插入的数组的下标值
- * 分三种情况:
- * 1、如果$idx==0,则在数组前面放一个0;
- * 2、如果$idx>$count,则在$idx处放一个0,剩下的用$idx-$count+1个0填充;
- * 3、如果0<$idx<=$count,则在$idx处插入一个0。
- * @param unknown_type $arr是从小到大已经排好序的数组
- * @param unknown_type $idx
- * @param unknown_type $value
- */
- public function insertArr($arr,$idx,$value){
- $v=0;
- if($idx==0){
- return array_merge(array($v),$arr);
- }
- $countcount=count($arr);
- if($idx>$count){
- return array_merge($arr,array_fill(0, $idx-$count+1, $v));
- }
- $tmparr=array();
- for($i=0;$i<$count;$i++){
- $tmparr[]=$arr[$i];
- if($i==$idx-1){
- $tmparr[]=$v;
- $arr=array_merge($tmparr,array_splice($arr, $idx));break;
- }
- }
- return $arr;
- }
- /**
- * 获取两个数组对比后,填充短数组的下标成员函数,以符合$array数组的长度
- * 其中$arr数组的长度必须小于等于$array的数组长度,并且$array必须是连续自然数集合数组,$arr则可以跳跃递增
- * @param unknown_type $arr 短数组参数,从小到大已经排好序的数组
- * @param unknown_type $array长数组参数,从小到大已经排好序的数组
- */
- public function arrdifidx($arr,$array){
- $arrc=count($arr);
- $arrayc=count($array);
- $rtn=array();
- if($arr==$array){return $rtn;}
- for($i=0,$j=0;$i<=$arrc;$i++){
- for($k=$j;$k<$arrayc;$k++){
- if($arr[$i]>$array[$k]){
- $rtn[]=$j;
- $j++;
- }else{
- $j++;
- break;
- }
- }
- }
- if(count($rtn)<$arrayc){
- array_push($rtn, $arrayc-1);
- }
- return $rtn;
- }