โปรแกรมสลับเรียงเลข
โจทย์
Write a program to swap elements in the given list of number such that odd numbers and even numbers are sorted.
For example, the given list of number is: 9 7 6 4 5 2
| 9 | 7 | 6 | 4 | 5 | 2 |
|---|---|---|---|---|---|
| Odd | Odd | Even | Even | Odd | Even |
Odd numbers are: 9 7 5 —(sort)—> 5 7 9
Even numbers are: 6 4 2 —(sort)—> 2 4 6
Put the numbers back to the odd and even position with the sorted order as follow:
| 5 | 7 | 2 | 4 | 9 | 6 |
|---|---|---|---|---|---|
| Odd | Odd | Even | Even | Odd | Even |
The final swap list is: 5 7 2 4 9 6
| Input | Output |
|---|---|
| 6 9 7 6 4 5 2 | 5 7 2 4 9 6 |
โค้ด
import java.util.*;
public class Program {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
ArrayList<Integer> originalList = new ArrayList<>();
ArrayList<Integer> evenList = new ArrayList<>(), oddList = new ArrayList<>();
for (int i = 0; i < n; i++) {
int number = scanner.nextInt();
originalList.add(number);
if (number % 2 == 0) {
evenList.add(number);
} else {
oddList.add(number);
}
}
Collections.sort(evenList);
Collections.sort(oddList);
int evenListIndex = 0, oddListIndex = 0;
for (int number : originalList) {
int finalNumber;
if (number % 2 == 0) {
finalNumber = evenList.get(evenListIndex);
evenListIndex++;
} else {
finalNumber = oddList.get(oddListIndex);
oddListIndex++;
}
System.out.print(finalNumber + " ");
}
}
}คำอธิบาย
ปรับปรุงล่าสุด