首页 > 试题广场 >

数组操作

[编程题]数组操作
  • 热度指数:13969 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解
输入一个无序整数数组,调整数组中数字的顺序, 所有偶数位于数组的前半部分,使得所有奇数位于数组的后半部分。
要求时间复杂度为O(n)。

输入描述:
给定无序数组。
长度不超过1000000。


输出描述:
所有偶数位于数组的前半部分,所有奇数位于数组的后半部分。
如果有多个答案可以输出任意一个正确答案。
示例1

输入

2 4 5 7 8 1

输出

2 4 8 7 5 1

备注:
请自觉使用O(n)的算法。
arr=list(map(int,input().split()))
i=0
j=len(arr)-1
while i<j:
    if i<j and arr[i]%2==0:
        i+=1
    if i<j and arr[j]%2==1:
        j-=1
    if i<j:
        arr[i],arr[j]=arr[j],arr[i]
for i in range(len(arr)):
    print(arr[i],end=" ")
    

发表于 2022-03-22 21:34:32 回复(0)