SingPath Quicksort私人测试失败

时间:2014-03-12 19:09:00

标签: python quicksort

我正在使用名为SingPath的网站学习Python。我需要写quicksort,但我收到错误:

  

"私人测试结果:所有公开测试都通过了,但是一些私有测试失败了。您需要概括解决方案。"

import random
def qsort(l):
  if len(l) <= 1:
    return l
  partition = l[random.randint(0,len(l)-1)]
  xx = [x for x in l if x < partition]
  yy = [x for x in l if x > partition]
  p = [x for x in l if x == partition]
  if type(l) != str:
    return qsort(xx) + p + qsort(yy)
  return ''.join(qsort(xx)+p+qsort(yy))

任何有关如何弄清楚这些代码不够通用的帮助都会非常感激。

我一直在考虑的两条线索是:

  1. 他们提到在问题描述中检查运行时
  2. 他们说当qsort()给出一个字符串而不是一个列表时,它应该能够以列表或字符串的形式返回

1 个答案:

答案 0 :(得分:0)

可能join期望连接字符串列表,并且你已经为它连接了一个字符串。所以你做了“添加”字符串,你试图避免使用单独的if。尝试

''.join([qsort(xx), p, qsort(yy)])