整数奇偶排序
- C语言代码
- C++ 代码
- Java代码
- Python代码
💐The Begin💐点点关注,收藏不迷路💐
|
给定10个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于100。
输出
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
样例输入
4 7 3 13 11 12 0 47 34 98
样例输出
47 13 11 7 3 0 4 12 34 98
C语言代码
#include <stdio.h>
// 交换两个整数的函数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n = 10;
int num;
int p = 0;
int q = 0;
int a[11]; // 存储奇数,多留一位方便操作
int b[11]; // 存储偶数,多留一位方便操作
// 循环读取10个整数
for (int i = 0; i < n; i++) {
scanf(“%d”, &num);
if (num % 2 == 1) { // 如果是奇数
a[++p] = num; // 将奇数存入数组a
} else {
b[++q] = num; // 将偶数存入数组b
}
}
// 对奇数数组进行从大到小的选择排序
for (int i = 1; i < p; i++) {
for (int j = i + 1; j <= p; j++) {
if (a[i] < a[j]) { // 如果前面的奇数小于后面的奇数
swap(&a[i], &a[j]); // 交换它们的位置
}
}
}
// 对偶数数组进行从小到大的选择排序
for (int i = 1; i < q; i++) {
for (int j = i + 1; j <= q; j++) {
if (b[i] > b[j]) { // 如果前面的偶数大于后面的偶数
swap(&b[i], &b[j]); // 交换它们的位置
}
}
}
// 输出排序后的奇数
for (int i = 1; i <= p; i++) {
printf("%d “, a[i]);
}
// 输出排序后的偶数
for (int i = 1; i <= q; i++) {
printf(”%d ", b[i]);
}
return 0;
}
C++ 代码
#include <iostream
>
#include <algorithm
>
using namespace std;
int main() {
int n = 10;
int num;
int p = 0;
int q = 0;
int a[11]; // 存储奇数,多留一位方便操作
int b[11]; // 存储偶数,多留一位方便操作
// 循环读取10个整数
for (int i = 0; i < n; i++) {
cin >> num;
if (num % 2 == 1) { // 如果是奇数
a[++p] = num; // 将奇数存入数组a
} else {
b[++q] = num; // 将偶数存入数组b
}
}
// 使用标准库的sort函数对奇数数组进行从大到小排序(自定义比较函数)
sort(a + 1, a + p + 1, [](int x, int y) { return x > y; });
// 使用标准库的sort函数对偶数数组进行从小到大排序(自定义比较函数)
sort(b + 1, b + q + 1, [](int x, int y) { return x < y; });
// 输出排序后的奇数
for (int i = 1; i <= p; i++) {
cout << a[i] << " ";
}
// 输出排序后的偶数
for (int i = 1; i <= q; i++) {
cout << b[i] << " ";
}
return 0;
}
Java代码
import java.util.Arrays; import java.util.Scanner;public class Main {
public static void main(String[] args) {
int n = 10;
Scanner scanner = new Scanner(System.in);
int[] a = new int[11]; // 存储奇数,多留一位方便操作
int[] b = new int[11]; // 存储偶数,多留一位方便操作
int p = 0;
int q = 0;
// 循环读取10个整数
for (int i = 0; i < n; i++) {
int num = scanner.nextInt();
if (num % 2 == 1) { // 如果是奇数
a[++p] = num; // 将奇数存入数组a
} else {
b[++q] = num; // 将偶数存入数组b
}
}
// 使用Arrays.sort函数结合自定义比较器对奇数数组进行从大到小排序
Arrays.sort(a, 1, p + 1, (x, y) -> y - x);
// 使用Arrays.sort函数结合自定义比较器对偶数数组进行从小到大排序
Arrays.sort(b, 1, q + 1, (x, y) -> x - y);
// 输出排序后的奇数
for (int i = 1; i <= p; i++) {
System.out.print(a[i] + " ");
}
// 输出排序后的偶数
for (int i = 1, i <= q; i++) {
System.out.print(b[i] + " ");
}
}
}
Python代码
nums = list(map(int, input().split())) # 读取输入的10个整数并转换为列表
odds = sorted([num for num in nums if num % 2 == 1], reverse=True) # 筛选出奇数并从大到小排序
evens = sorted([num for num in nums if num % 2 == 0]) # 筛选出偶数并从小到大排序
print(" ".join(map(str, odds + evens))) # 先输出奇数再输出偶数,将整数转换为字符串并用空格连接后输出
💐The End💐点点关注,收藏不迷路💐
|