/* 采用库函数 */
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int x;
vector<int> odd, even;
int main()
{
ios::sync_with_stdio(false);
for(int i = 0; i < 10; i++)
{
cin >> x;
if (x % 2) odd.push_back(x);
else even.push_back(x);
}
sort(odd.begin(), odd.end(), greater<int>());
sort(even.begin(), even.end());
for(auto x: odd) cout << x << " ";
for(auto x: even) cout << x << " ";
}
/* 采用快速排序 */
#include <iostream>
#include <algorithm> // 调用 reverse 函数
#include <vector>
using namespace std;
// 用来存储奇数和偶数的全局向量
vector<int> odd, even;
int x;
// 快速排序函数
void quick_sort(vector<int>& arr, int l, int r)
{
if (l >= r) return;
int x = arr[l + r >> 1];
int i = l - 1, j = r + 1;
while (i < j)
{
while (arr[++i] < x);
while (arr[--j] > x);
if (i <= j) swap(arr[i], arr[j]);
}
quick_sort(arr, l, j);
quick_sort(arr, j + 1, r);
}
int main()
{
ios::sync_with_stdio(false); // 关闭同步,提高cin和cout的效率
cin.tie(nullptr); // 解除cin和cout的绑定,提高效率
// 读取10个整数并将它们分到奇数和偶数向量中
for (int i = 0; i < 10; i++) {
cin >> x;
if (x % 2) {
odd.push_back(x);
}
else {
even.push_back(x);
}
}
// 对奇数向量进行排序并倒序输出
quick_sort(odd, 0, odd.size() - 1);
reverse(odd.begin(), odd.end());
// 对偶数向量进行排序
quick_sort(even, 0, even.size() - 1);
// 输出奇数向量中的元素
for (auto num : odd) cout << num << " ";
// 输出偶数向量中的元素
for (auto num : even) cout << num << " ";
return 0;
}
/* 采用归并排序 */
#include <iostream>
#include <algorithm> // 调用 reverse 函数
#include <vector>
using namespace std;
// 用来存储奇数和偶数的全局向量
vector<int> odd, even;
int x;
// 归并排序函数
void merge_sort(vector<int>& arr, int l, int r)
{
if (l >= r) return;
int mid = l + r >> 1;
merge_sort(arr, l, mid), merge_sort(arr, mid + 1, r);
vector<int> tmp(r - l + 1); // 局部临时向量
int k = 0, i = l, j = mid + 1;
// 合并两个已排序的子数组
while (i <= mid && j <= r)
{
if (arr[i] <= arr[j]) tmp[k++] = arr[i++];
else tmp[k++] = arr[j++];
}
while (i <= mid) tmp[k++] = arr[i++];
while (j <= r) tmp[k++] = arr[j++];
// 将排序的结果写回原数组
for (int i = l, j = 0; i <= r; i++, j++) arr[i] = tmp[j];
}
int main()
{
ios::sync_with_stdio(false); // 关闭同步,提高cin和cout的效率
cin.tie(nullptr); // 解除cin和cout的绑定,提高效率
// 读取10个整数并将它们分到奇数和偶数向量中
for (int i = 0; i < 10; i++) {
cin >> x;
if (x % 2) {
odd.push_back(x);
}
else {
even.push_back(x);
}
}
// 对奇数向量进行排序并倒序输出
merge_sort(odd, 0, odd.size() - 1);
reverse(odd.begin(), odd.end());
// 对偶数向量进行排序
merge_sort(even, 0, even.size() - 1);
// 输出奇数向量中的元素
for (auto num : odd) cout << num << " ";
// 输出偶数向量中的元素
for (auto num : even) cout << num << " ";
return 0;
}