题目:一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序 比如: input: 1,7,-5,9,-12,15 ans: -5,-12,1,7,9,15 要求时间复杂度O(N),空间O(1) 。
貌似无解。。。。。。
若不用保证相对顺序,则代码如下,类似partition,pivot=0
void rearrange(int arr[], int n)
{
int i = -1,j;
for(j = 0; j < n; j++)
{
if(arr[j] < 0)
{
i++;
swap(&arr[i], &arr[j]);
}
}
}