一般这种要求时间复杂度的,采取的策略为用空间换时间
代码:
#include <iostream>
using namespace std;
int* Ajust(int a[], int n) {
int* res = new int[n];
int* even = new int[n];
int* odd = new int[n];
int index = 0, even_index = 0, odd_index = 0;
int i, j;
for(i = 0; i < n; i++) {
if(a[i] % 2 == 0) {
even[even_index++] = a[i];
} else {
odd[odd_index++] = a[i];
}
}
i = j = 0;
while(i < odd_index) {
res[index++] = odd[i++];
}
while(j < even_index) {
res[index++] = even[j++];
}
return res;
}
int main() {
int a[6] = {1, 3, 2, 4, 8, 6};
int *res = Ajust(a, 6);
for( int i = 0; i < 6; i++)
cout << res[i] << " ";
return 0;
}