【问题标题】:SingPath Quicksort Private Tests FailedSingPath 快速排序私人测试失败
【发布时间】:2014-04-17 04:13:32
【问题描述】:

我正在使用一个名为 SingPath 的网站学习 Python。我需要编写快速排序,但出现错误:

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

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() 被赋予一个字符串而不是一个列表时,它应该能够以列表或字符串的形式返回

【问题讨论】:

    标签: python quicksort


    【解决方案1】:

    可能join 需要一个字符串列表来连接,而您已经给了它一个连接的字符串。所以你做了“添加”字符串,你试图用单独的if来避免这种情况。试试

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

    【讨论】:

      猜你喜欢
      • 2017-02-05
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2016-12-07
      相关资源
      最近更新 更多