2014-05-05 19 views
2

我想检查列表是否使用python中的递归排序。如果排序则返回true,否则返回False。检查是否使用python递归排序

def isSorted(L): 
    if len(L) < 2: 
     return True 

现在,我不知道我应该做什么next.Please帮助!

+0

你应该写一个单元为此测试:)然后声明x项目列表的顺序是正确的。 –

回答

6

检查前两项。

如果他们是有序的,检查下一个项目使用递归:

def isSorted(L): 
    if len(L) < 2: 
     return True 
    return L[0] <= L[1] and isSorted(L[1:]) 

旁注功能可以表达为一个单一的表达thefourtheye评论:

return len(L) < 2 or (L[0] <= L[1] and isSorted(L[1:])) 
+2

'return len(L)<2或(L [0] <= L [1] and isSorted(L [1:]))'? – thefourtheye

+0

+1。也可以通过为当前元素的索引获取额外参数并在递归调用中增加此索引来避免列表副本。然后定义一个包装器,将初始索引集合传递给0。基本情况将变为idx> = len(L)-1。但是这抓住了主意。尼斯。 – lightalchemist

+0

如果在每一步中将列表分成两半,则递归深度将为log2(n) –