本题要求实现一个函数,将数组中的奇数元素排在前半段,偶数排在后半段。 此方法采用从前往后找偶数,再从后往前找奇数的方法,找到后两者交换。 如1,2,3,4,7,6,5经过函数整理后变成1,5,3,7,4,6,2。其中2和5进行了交换,4和7进行了交换。
时间: 2024-09-17 17:05:03 浏览: 47
题目要求编写一个函数,对给定数组进行分区操作,使得所有奇数出现在数组的前半部分,所有偶数出现在后半部分。这个过程需要遍历数组两次:首先从前向后找到第一个偶数,然后从后向前找到第一个奇数,如果这两个位置上的数字不符合要求(即偶数在奇数前面或奇数在偶数后面),就交换它们的位置。这个过程会反复进行,直到整个数组满足条件。
以下是一个简单的Python示例代码实现:
```python
def rearrange_array(arr):
n = len(arr)
# 两个指针,一个指向开始,一个指向结束
left, right = 0, n - 1
while left < right:
# 找到第一个偶数
while left < right and arr[left] % 2 != 0:
left += 1
# 找到第一个奇数
while left < right and arr[right] % 2 == 0:
right -= 1
if left < right:
# 交换两个位置的元素
arr[left], arr[right] = arr[right], arr[left]
left += 1
right -= 1
# 示例
arr = [1, 2, 3, 4, 7, 6, 5]
rearrange_array(arr)
print(arr) # 输出: [1, 5, 3, 7, 4, 6, 2]
阅读全文