计蒜客Python 程序设计 交叉排序

交叉排序

  • 1000ms
  • 5000K

输入一行 k 个用空格分隔开的整数,依次为 n1, n2 … nk。请将所有下标不能被 3 但可以被 2 整除的数在这些数字原有的位置上进行升序排列,此外,将余下下标能被 3 整除的数在这些数字原有的位置上进行降序排列。

输出包括一行,与输入相对应的若干个整数,为排序后的结果,整数之间用空格分隔。

样例输入

1 5 4 3 10 7 19

样例输出

1 3 7 5 10 4 19

Py2代码:

from __future__ import print_function
a=raw_input().split(' ')
a.insert(0,'0')
num=0
b=[]
c=[]
while num<len(a):
	a[num]=int(a[num])
	if num!=0 and num%2==0 and num%3!=0:
		b.append(a[num])
	elif num%3==0 and num!=0:
		c.append(a[num])
	num+=1

b.sort()
c.sort(reverse=True)
for i in range(len(a)):
    if(i!=0 and i%2==0 and i%3!=0):
        a[i]=b[0]
        del b[0]
    elif i%3==0 and i!=0:
        a[i]=c[0]
        del c[0]
for i in range(1,len(a)):
    if(i==len(a)-1):
        print(a[i],end='')
    else:
        print(a[i],end=' ')

Py3代码:

a=input().split(' ')
a.insert(0,'0')
num=0
b=[]
c=[]
while num<len(a):
	a[num]=int(a[num])
	if num!=0 and num%2==0 and num%3!=0:
		b.append(a[num])
	elif num%3==0 and num!=0:
		c.append(a[num])
	num+=1

b.sort()
c.sort(reverse=True)
for i in range(len(a)):
    if(i!=0 and i%2==0 and i%3!=0):
        a[i]=b[0]
        del b[0]
    elif i%3==0 and i!=0:
        a[i]=c[0]
        del c[0]
for i in range(1,len(a)):
    if(i==len(a)-1):
        print(a[i],end='')
    else:
        print(a[i],end=' ')

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注