重新排列积极和消极的数字PHP

时间:2016-01-13 21:51:29

标签: php

数组有负数和正数。将数字分开,使得负数位于开头,而正数则位于末尾而不改变顺序。

  

示例:

     

数组= {1,-3,-5,9,-8}

     

O / P = {-3,-5,-8,1,9}

我在c,c ++,java中找到了很多答案,但在PHP中没有,所以任何人都可以告诉我如何或更好的方法来实现这个目标?

  

然而这个问题暂时搁置,我尝试了一些解决方案和   在下面添加我自己的答案,希望它对某些人有用。

function part($arr){

    $j = 0;

    for($i=0;$i<count($arr);$i++){

       $val = $arr[$i];
       $k = $i;

      while($k>$j && $val < 0){

         $arr[$k] = $arr[$k-1];
         $k = $k-1;

         if($j==$k){
           $j=$j+1;
         }

        $arr[$k] = $val;

      }

    }

    return $arr;

  }

  $arr = array(1, -3, -5, 9 , -8);
  print_r(part($arr));

1 个答案:

答案 0 :(得分:2)

没有为你做所有的工作。

查看array_filter您可以将负值过滤为1个数组,然后将正值过滤到另一个数组中。

然后使用array_merge合并2。

相关问题