用Java,定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。(可以创建其他数组,不必须在原数组中改变)
时间: 2024-05-12 08:12:55 浏览: 54
以下是一个可能的 Java 实现:
```java
public class OddEvenSort {
public static void main(String[] args) {
int[] nums = {3, 7, 1, 8, 4, 2, 9, 6, 5};
int[] odds = new int[nums.length];
int[] evens = new int[nums.length];
int oddIndex = 0;
int evenIndex = 0;
for (int num : nums) {
if (num % 2 == 0) {
evens[evenIndex++] = num;
} else {
odds[oddIndex++] = num;
}
}
int[] sortedNums = new int[nums.length];
System.arraycopy(odds, 0, sortedNums, 0, oddIndex);
System.arraycopy(evens, 0, sortedNums, oddIndex, evenIndex);
// 输出排好序的数组
for (int num : sortedNums) {
System.out.print(num + " ");
}
}
}
```
以上实现中,我们首先定义了一个包含多个数字的数组 `nums`。然后我们创建了两个新的数组 `odds` 和 `evens`,分别用来存放奇数和偶数。我们使用 `oddIndex` 和 `evenIndex` 两个指针来记录当前已经存放了多少个奇数和偶数。接着我们遍历原数组 `nums`,如果遇到了偶数,则将其放入 `evens` 数组的末尾,并将 `evenIndex` 指针加一;如果遇到了奇数,则将其放入 `odds` 数组的末尾,并将 `oddIndex` 指针加一。
接下来,我们创建一个新的、与原数组 `nums` 同样长度的数组 `sortedNums`。我们使用 `System.arraycopy()` 方法将 `odds` 数组中的元素复制到 `sortedNums` 数组的前半部分,再将 `evens` 数组中的元素复制到 `sortedNums` 数组的后半部分。最后,我们输出排好序的数组 `sortedNums`。
这个实现的时间复杂度是 O(n),空间复杂度也是 O(n),其中 n 是原数组的长度。
阅读全文