关闭

初识python 交叉排序

标签: python
539人阅读 评论(0) 收藏 举报
分类:

好吧,断断续续的在计蒜客上学了几次python,感觉语法很反人类,虽然当年刚从pascal转到c的时候也觉得c的语法很繁琐,不过好歹c的编译器都很nice,debug强大,但是在ubuntu下用sublime进行debug简直是噩梦(好吧,其实只是自己太懒又太水不愿意又不会写插件……)

最近想了想以后大概的方向,可能也就是机器学习或者是计算机图形这两大块了……在数学系想要去跟cs的人比项目估计是不太可能的了……在大一还是先把语言基础学好吧……


放上计蒜客上的一道最基础的题目……


  •  1000ms
  •  5000K

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

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

样例输入

1 5 4 3 10 7 19

样例输出

1 3 7 5 10 4 19

提示信息

请注意,题面中的下标是从 1 开始的哦!

# coding=utf-8
list=[]
for x in raw_input().split():
    list.append(int(x))  
cnt=len(list)
ll=cnt
list1=[]
list2=[]
list3=[]
for i in range(1,len(list)+1):
    if(i%2==0 and i%3!=0):
      list1.append(list[i-1])
    elif (i%3==0):
      list2.append(list[i-1])  
    else:
      list3.append(list[i-1])
list1.sort()
list2.sort(reverse = True)
lista=[]
for i in range(1,cnt+1):
    if((i)%2==0 and (i)%3!=0):
        lista.append(list1.pop(0))
    elif (i%3==0):
       lista.append(list2.pop(0))
    else :
       lista.append(list3.pop(0))
for i in range(0,cnt):
    print lista[i],

    

好吧,虽然是道最水的题目……


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6770次
    • 积分:408
    • 等级:
    • 排名:千里之外
    • 原创:35篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    最新评论