题目描述 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。(测试用例仅做参考,我们会根据代码质量进行评分) 输入描述: 第一行输入整数n。(1<=n<=1000)表示数组大小 第二行输入n个整数a.(1<=n<=100) 输出描述: 输出重排之后的数组。
时间: 2024-04-09 20:29:20 浏览: 13
以下是一个实现将数组重新排列,使得数组左边为奇数,右边为偶数的示例代码:
```python
n = int(input()) # 输入数组大小
a = list(map(int, input().split())) # 输入数组元素
# 使用双指针进行数组重排
left = 0
right = n - 1
while left < right:
# 左指针指向的元素为奇数时,向右移动左指针
while a[left] % 2 == 1:
left += 1
# 右指针指向的元素为偶数时,向左移动右指针
while a[right] % 2 == 0:
right -= 1
# 如果左指针仍在右指针的左侧,则交换两个指针指向的元素
if left < right:
a[left], a[right] = a[right], a[left]
left += 1
right -= 1
# 输出重排之后的数组
for num in a:
print(num, end=' ')
```
首先,我们通过输入获取数组大小`n`和`n`个整数元素。然后,我们使用双指针方法进行数组重排,将奇数放在左边,偶数放在右边。最后,我们按顺序输出重排后的数组元素。
相关问题
一个数组里有奇数有偶数(乱序),调整数组顺序使奇数位于偶数前面。(测试用例仅做参考,我们会根据代码质量进行评分)
你可以使用双指针法来解决这个问题。定义两个指针,一个指向数组头部,一个指向数组尾部。然后分别向中间遍历,当左指针指向偶数,右指针指向奇数时,交换两个数字的位置。直到左右指针相遇为止。
下面是一个示例的实现代码:
```python
def rearrange_array(nums):
left = 0
right = len(nums) - 1
while left < right:
# 左指针指向奇数,继续向右移动
if nums[left] % 2 == 1:
left += 1
# 右指针指向偶数,继续向左移动
elif nums[right] % 2 == 0:
right -= 1
# 左指针指向偶数,右指针指向奇数,交换两个数字的位置
else:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
return nums
# 测试用例
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = rearrange_array(nums)
print(result)
```
这段代码会输出 `[1, 9, 3, 7, 5, 6, 4, 8, 2]`,其中奇数位于偶数前面。注意,这里假设奇数和偶数的相对顺序不重要,只要奇数在偶数前面即可。
判断一个数是否为素数设计测试用例
要判断一个数是否为素数,可以设计以下测试用例:
1. 正常情况下的素数:
输入:7
预期输出:True
2. 正常情况下的非素数:
输入:10
预期输出:False
3. 边界情况下的素数:
输入:2
预期输出:True
4. 边界情况下的非素数:
输入:1
预期输出:False
5. 大数情况下的素数:
输入:9973
预期输出:True
6. 大数情况下的非素数:
输入:10000
预期输出:False