运用栈讲将一个数组奇偶数分开,奇数在前
时间: 2023-05-12 14:05:14 浏览: 107
可以使用两个指针,一个指向数组的开头,一个指向数组的结尾。然后,当左指针指向的元素为偶数,右指针指向的元素为奇数时,交换这两个元素。重复这个过程直到左指针大于等于右指针。
以下是示例代码:
void separateOddEven(int arr[], int size) {
int left = 0, right = size - 1;
while (left < right) {
while (arr[left] % 2 == 1 && left < right) {
left++;
}
while (arr[right] % 2 == 0 && left < right) {
right--;
}
if (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
注意,这个算法的时间复杂度是 O(n),其中 n 是数组的长度。
相关问题
java 奇偶数问题。设有一维整型数组共有10个元素,且偶数与奇数各占一半, 将该数组变换为2×5的二维数组且偶数和奇数各成一行。
在Java中,我们可以创建一个一维数组,并将其中的奇数和偶数分别放入两个独立的一维数组中。然后,将这两个数组合并到一个新的二维数组中,形成一个2x5的结构,其中第一行包含偶数,第二行包含奇数。这里是一个简单的步骤说明:
1. 初始化一个长度为10的一维整型数组,比如`int[] nums = new int[10]`。
2. 遍历这个数组,判断每个元素是否为偶数。如果是偶数,将其添加到一个名为`evenArray`的新数组中;如果为奇数,添加到`oddArray`中。你可以使用`if (nums[i] % 2 == 0)`来检查奇偶性。
3. 创建两个新的二维数组,`int[][] evenTwoD = new int[2][5]` 和 `int[][] oddTwoD = new int[2][5]`,用于存放偶数和奇数。
4. 根据数组大小,确定从`evenArray`和`oddArray`中取多少元素填充到二维数组中。因为两者各有5个元素,所以可以直接复制过去。
5. 将`evenArray`和`oddArray`的元素按照行依次填入`evenTwoD`和`oddTwoD`,例如:
- 第0、4、8位置给`evenArray`;
- 第1、5位置给`oddArray`;
- 第2、6位置再给`evenArray`;
- 最后两行则给剩余的`oddArray`。
6. 最后,将两个二维数组拼接在一起,形成2x5的矩阵。
以下是伪代码示例:
```java
// 初始化一维数组和二维数组
int[] nums = ...;
int[][] evenTwoD = new int[2][5];
int[][] oddTwoD = new int[2][5];
// 分离偶数和奇数
for (int i = 0; i < 10; i++) {
if (nums[i] % 2 == 0) {
evenArray[j++] = nums[i]; // j 用于跟踪哪一行满了
} else {
oddArray[k++] = nums[i]; // k 同理
}
}
// 将分开的数组填充到二维数组中
evenTwoD[0] = evenArray;
oddTwoD[0] = oddArray.slice(0, 5);
evenTwoD[1] = evenArray.slice(5, 10);
oddTwoD[1] = oddArray;
// 结果存储在evenTwoD和oddTwoD中
```
题目1:数组元素奇偶排序。(根据以下要求编写程序)(1)定义一个整型一维数组,任意输入数组的元素,其中包含奇数和偶数。(2)定义一个函数,实现数组元素奇数在左、偶数在右的排列。(3)在上述定义的函数中
题目1描述的是一个常见的数组操作,需要将数组中的奇数和偶数分开,并保持原有的相对顺序。可以采用双指针法来实现这个功能。下面是一个简单的Python示例:
```python
def sort_array(arr):
# 初始化两个指针,一个指向开始,一个指向结束
left = 0 # 左指针,追踪奇数
right = len(arr) - 1 # 右指针,追踪偶数
while left < right:
# 如果左指针所指的元素是偶数,向右移动
if arr[left] % 2 == 0:
left += 1
# 否则,如果是奇数,交换它和右指针所指的元素,然后向左移动右指针
else:
arr[left], arr[right] = arr[right], arr[left]
right -= 1
return arr
# 示例:
arr = [1, 2, 3, 4, 5, 6]
sorted_arr = sort_array(arr)
print("排序后的数组:", sorted_arr)
#
阅读全文
相关推荐












