百度面试题,假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数件和正数间元素相对位置不变。
时空复杂度要求分别为:o(n),o(1)
例如
-3 4 2 -1 7 3 -5
排序后
-3 -1 -5 4 2 7 3
$arr = array(-1,3,5,-4,2,-2,1,6,-7,8,9,0,5,6,7);
list($newArr, $arr) = getOrder($arr);
$arr = array_merge($newArr, $arr);
print_r($arr);
function getOrder($arr)
{
foreach($arr as $key => $val) {
if ($val < 0)
{
$newArr[] = $val;
unset($arr[$key]);
}
}
return array($newArr,$arr);
}