📅  最后修改于: 2023-12-03 15:12:35.186000             🧑  作者: Mango
这是一道来自GATE 2017 MOCK II的编程题,要求编写一个程序,实现以下功能:
这道题比较简单,只需要用两个指针分别从数组的首尾向中间扫描,遇到奇数就放在左边,遇到偶数就放在右边,直到指针相遇为止。
以下是Python的实现代码:
def rearrange(arr, n):
i, j = 0, n-1
while i < j:
while i < j and arr[i] % 2 == 1:
i += 1
while i < j and arr[j] % 2 == 0:
j -= 1
if i < j:
arr[i], arr[j] = arr[j], arr[i]
return arr
n = int(input())
arr = [int(x) for x in input().split()]
arr = rearrange(arr, n)
print(*arr)
我们首先定义了一个函数rearrange,它的参数是一个整数数组arr和数组的长度n。函数内部定义了两个指针i和j,分别指向数组的头和尾。
当i小于j时,循环执行以下操作:
重复以上步骤直到i等于j为止,此时数组就被改变了。
在主程序中,我们先读入n和数组arr,然后调用rearrange函数对arr进行操作,最后输出变换后的数组。
使用方法:将以上代码拷贝到一个Python文件中,运行即可。