#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
long long arr1[n];
for (int i = 0; i < n; i++) {
cin >> arr1[i];
}
for (int i = 0; i < n; i++) {
for (int k = i; k < n; k++) {
if (arr1[k] % 2 == 0) {
long long t = arr1[k];
arr1[k] = arr1[i];
arr1[i] = t;
}
}
cout << arr1[i] << " ";
}
}
有必要重新排列数组中的偶数和奇数,使偶数在开头,奇数仅在它们之后。必须保持顺序
数字已重新排列,但顺序未保留,请帮助
它是 C++,所以在一行中 -
如果我理解正确,您的“必须保留序列”...
如果有额外的内存,stable_partition 在线性时间内解决问题,如果没有,则在 NlogN 中解决。
一些笔记
标准 C++ 不包含可变长度数组。
long long arr1[n];这是关于一个n不是常量的字符串。GCC 支持它们作为扩展,但vector在这里更合适。既然我们这里有这么一个C++,那么在没有循环的情况下读/写数组也更符合逻辑。