给出一个整数数组,然后按照奇数在左,偶数在右,重新输出数组
时间: 2023-12-04 10:03:16 浏览: 145
以下是 Python 代码实现:
```python
def oddEvenSort(nums):
left = 0
right = len(nums) - 1
while left < right:
if nums[left] % 2 == 0 and nums[right] % 2 == 1:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
elif nums[left] % 2 == 1:
left += 1
elif nums[right] % 2 == 0:
right -= 1
return nums
```
这个函数接受一个整数数组 `nums` 作为输入,并返回按照奇数在左,偶数在右排列后的数组。具体实现方法是使用双指针,左指针指向数组开头,右指针指向数组结尾。当左指针指向的数是偶数,右指针指向的数是奇数时,交换两个数的位置;否则如果左指针指向的数是奇数,则左指针右移一位;如果右指针指向的数是偶数,则右指针左移一位。最终返回排列后的数组。
例如,对于输入数组 `[1,2,3,4,5,6,7,8,9]`,函数会返回 `[1, 9, 3, 7, 5, 6, 4, 2, 8]`。
相关问题
给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要重新排列数组,使得数组左边为奇数,右边为偶数,可以使用双指针的方法进行操作。以下是一种实现方式:
```python
def rearrange_array(nums):
left = 0
right = len(nums) - 1
while left < right:
# 左指针指向的元素为奇数时,向右移动左指针
while nums[left] % 2 == 1:
left += 1
# 右指针指向的元素为偶数时,向左移动右指针
while nums[right] % 2 == 0:
right -= 1
# 如果左指针仍在右指针的左侧,则交换两个指针指向的元素
if left < right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
return nums
# 示例用法
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
rearranged_nums = rearrange_array(nums)
print(rearranged_nums)
```
在上面的示例中,我们使用了两个指针`left`和`right`。左指针从数组的开头向右移动,右指针从数组的末尾向左移动。当左指针指向的元素为奇数时,左指针向右移动,直到找到一个偶数。当右指针指向的元素为偶数时,右指针向左移动,直到找到一个奇数。然后,交换左右指针指向的元素。重复这个过程,直到左指针超过右指针。最后,返回重新排列后的数组。
用java定义一个整数数组,求数组中奇数和偶数个数
在Java中,你可以使用以下步骤来定义一个整数数组并计算其中奇数和偶数的个数:
1. 首先,你需要使用数组初始化语法来定义一个整数数组。例如:
```java
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
```
2. 然后,你将需要遍历这个数组,并使用条件语句检查每个元素是奇数还是偶数,同时计数。这可以通过创建两个计数器变量来完成,一个用于奇数,一个用于偶数。
```java
int oddCount = 0;
int evenCount = 0;
for(int number : numbers) {
if(number % 2 == 0) {
evenCount++; // 偶数计数加一
} else {
oddCount++; // 奇数计数加一
}
}
```
3. 最后,你将得到奇数和偶数的计数,并可以使用`System.out.println`方法将它们打印出来。
```java
System.out.println("数组中的偶数个数为:" + evenCount);
System.out.println("数组中的奇数个数为:" + oddCount);
```
综合上述步骤,完整的Java代码如下:
```java
public class OddEvenCount {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int oddCount = 0;
int evenCount = 0;
for(int number : numbers) {
if(number % 2 == 0) {
evenCount++;
} else {
oddCount++;
}
}
System.out.println("数组中的偶数个数为:" + evenCount);
System.out.println("数组中的奇数个数为:" + oddCount);
}
}
```
执行这段代码会输出数组中的偶数和奇数的个数。
阅读全文