描述
现在小陈同学学习完了排序,现在他接到了一个任务:
给定一个 10 个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入描述
输入一行,包含 10个整数,彼此以一个空格分开,
每个整数的范围是大于等于0,小于等于100。
输出描述
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include <bits/stdc++.h> using namespace std;
void m(int arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { bool tmp = false; if (arr[j] % 2 == 0 && arr[j + 1] % 2 != 0) { tmp = true; } else if (arr[j] % 2 != 0 && arr[j + 1] % 2 != 0 && arr[j] < arr[j + 1]) { tmp = true; } else if (arr[j] % 2 == 0 && arr[j + 1] % 2 == 0 && arr[j] > arr[j + 1]) { tmp = true; } if (tmp) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }
int main() { int in[10]; for (int i = 0; i < 10; i++) { cin >> in[i]; } m(in, 10); for (int i = 0; i < 10; i++) { cout << in[i] << " "; } return 0; }
|