例如:处理前:{5 -3 6 -7 -6 1 8 -4 0 0},处理后:{-3 -7 -6 -4 5 6 1 8 0 0}.
#include <iostream>
#include <algorithm>
using namespace std;
const int LEN = 10;
void printInt(int c){
cout<<c<<" ";
}
void printArr(int *res){
for_each(res, res+LEN, printInt);
cout<<endl;
}
int main(){
int arr[LEN] = { 5, -3, 6, -7, -6, 1, 8, -4, 0, 0};
printArr(arr);
int res[LEN];
int res_f_index = 0;
int res_b_index = LEN - 1;
for(int i = 0; i < LEN; i++){
if(arr[i] < 0){
res[res_f_index++] = arr[i];
}
}
for(int i = LEN - 1; i >=0; i--){
if(arr[i] >= 0){
res[res_b_index--] = arr[i];
}
}
printArr(res);
return 0;
}
这段代码,时间复杂度我认为应该是O(n)没错。
空间复杂度是多少呢?