1181:整数奇偶排序
时间: 2025-07-19 10:09:08 浏览: 24
### 关于整数奇偶排序的算法及其实现
对于给定的要求——即对一组整数按照特定顺序进行排列,其中奇数位于前面并按降序排列,而偶数则跟在其后并按升序排列——可以采用如下策略来解决问题[^1]。
#### 数据结构的选择
为了高效处理这个问题,可以选择两个列表分别存储奇数和偶数。这样做的好处是可以独立地对这两类数值应用不同的排序逻辑而不互相干扰。
#### 排序过程描述
当输入一系列整数时,程序会遍历这些数字并将它们分类到相应的集合中去。具体来说:
- 对于每一个读取到的整数`num`,如果它是奇数,则将其加入到用于保存奇数的容器内;
- 若该数为偶数,则放入另一个专门存放偶数的地方。
完成上述操作之后,接下来就是针对这两个子集执行各自的排序规则:奇数部分做降序排列;偶数部分实施升序整理。最后一步便是将两组已排序的数据连接起来形成最终的结果序列[^2]。
下面是基于Java语言的一个简单实现例子:
```java
import java.util.*;
public class OddEvenSort {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Integer> oddNumbers = new ArrayList<>();
List<Integer> evenNumbers = new ArrayList<>();
String inputLine = scanner.nextLine();
String[] numbersStrArray = inputLine.split(" ");
for (String str : numbersStrArray){
int num = Integer.parseInt(str.trim());
if(num % 2 != 0){ // 判断是否为奇数
oddNumbers.add(num);
}else{
evenNumbers.add(num);
}
}
Collections.sort(oddNumbers, Comparator.reverseOrder()); // 奇数降序
Collections.sort(evenNumbers); // 偶数升序
System.out.println(String.join(" ", oddNumbers.stream().map(Object::toString).toArray(String[]::new)) +
" " +
String.join(" ", evenNumbers.stream().map(Object::toString).toArray(String[]::new)));
}
}
```
这段代码实现了从标准输入接收一串由空格分隔开来的整数字符串,并依据题目所设定的标准对其进行排序后再打印出来[^3]。
阅读全文
相关推荐


















