数组有负数和正数。将数字分开,使得负数位于开头,而正数则位于末尾而不改变顺序。
示例:
数组= {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));
答案 0 :(得分:2)
没有为你做所有的工作。
查看array_filter
您可以将负值过滤为1个数组,然后将正值过滤到另一个数组中。
然后使用array_merge
合并2。