输入一个整数n和n个各不相等的整数,将这些整数从小到大进行排序,要求奇数在前,偶数在后。
时间: 2023-06-05 16:48:05 浏览: 214
可以先将这n个整数分为奇数和偶数两组,分别进行排序,最后将奇数组和偶数组合并即可。
具体实现可以使用两个指针,一个指向奇数组的起始位置,一个指向偶数组的起始位置,然后分别从小到大比较两个组的元素,将较小的元素放入新的数组中,直到其中一个组的元素全部放入新数组中,然后将另一个组的剩余元素依次放入新数组中即可。
以下是示例代码:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> odd, even;
for (int i = ; i < n; i++) {
int num;
cin >> num;
if (num % 2 == ) {
even.push_back(num);
} else {
odd.push_back(num);
}
}
sort(odd.begin(), odd.end());
sort(even.begin(), even.end());
vector<int> res;
int i = , j = ;
while (i < odd.size() && j < even.size()) {
if (odd[i] < even[j]) {
res.push_back(odd[i]);
i++;
} else {
res.push_back(even[j]);
j++;
}
}
while (i < odd.size()) {
res.push_back(odd[i]);
i++;
}
while (j < even.size()) {
res.push_back(even[j]);
j++;
}
for (int k = ; k < res.size(); k++) {
cout << res[k] << " ";
}
cout << endl;
return ;
}
```
阅读全文