设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6994|回复: 2
打印 上一主题 下一主题

【每日一坑2】脑洞大开的解法

[复制链接]

2

主题

0

好友

26

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2016-9-12 23:33:35 |只看该作者 |倒序浏览
from random import randint

a=[randint(1,20) for i in range(20)]
print a
b=[]
for i in a:
    if i not in b:
        b.append(i)
print b

def easysort(arr):
    if len(arr)<=1:
        return arr
    else:
        middlen=arr[len(arr)/2]
        left=[i for i in arr if i<middlen]
        middle=[i for i in arr if i==middlen]
        right=[i for i in arr if i>middlen]
        return easysort(left)+middle+easysort(right)
print easysort(b)
回复

使用道具 举报

2

主题

0

好友

26

积分

新手上路

Rank: 1

沙发
发表于 2016-9-12 23:41:32 |只看该作者
网上找到的答案
但是第二部分排序的函数我还是没看懂,谁能来帮忙解读下吗?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2016-9-13 17:23:36 |只看该作者
pythonnm 发表于 2016-9-12 23:41
网上找到的答案
但是第二部分排序的函数我还是没看懂,谁能来帮忙解读下吗? ...

用递归实现的折半排序吧。每次把小于中间数的扔到left,大于中间数的扔到right,然后再对left、right分别做同样操作,直到只剩一个数
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-21 20:13 , Processed in 0.025383 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部