Algorithm 这使用什么分区算法?(用于快速排序)

Algorithm 这使用什么分区算法?(用于快速排序),algorithm,python-2.7,Algorithm,Python 2.7,我正在研究并试图弄清楚他们在分区步骤中使用的算法 它看起来是递归的,但我不知道逻辑是什么。根据维基百科的说法,它似乎不是标准的“Lomuto”分区方案 任何关于如何完成挑战的指点都将被感激,没有破坏者,我想自己完成它;但是帖子里没有足够的信息继续 编辑: 以下是它在动画中显示的列表状态之间的转换: 5,2,6,1,3,4 4,2,6,1,3,5 4,2,5,1,3,6 4,2,3,1,5,6 1,2,3,4,5,6 (然后重复)根据动画,他们每次都选择第一个元素作为轴,然后根据轴的值交换值。

我正在研究并试图弄清楚他们在分区步骤中使用的算法

它看起来是递归的,但我不知道逻辑是什么。根据维基百科的说法,它似乎不是标准的“Lomuto”分区方案

任何关于如何完成挑战的指点都将被感激,没有破坏者,我想自己完成它;但是帖子里没有足够的信息继续

编辑:

以下是它在动画中显示的列表状态之间的转换:

  • 5,2,6,1,3,4
  • 4,2,6,1,3,5
  • 4,2,5,1,3,6
  • 4,2,3,1,5,6
  • 1,2,3,4,5,6

(然后重复)

根据动画,他们每次都选择第一个元素作为
轴,然后根据
轴的值交换值。轴左侧的值应较小,右侧的值应较大。我没有透露答案,但下面的代码只是你的一个开端

下面的代码片段用于
快速排序
算法

def partition(A, start, end):
    pivot = A[end]
    pindex = start
    for i in range(start, end):
        if A[i] <= pivot:
            A[i], A[pindex] = A[pindex], A[i]
            pindex += 1

    A[pindex], A[end] = A[end], A[pindex]
    return pindex

def quick_sort(A, start, end):

    if start < end:
        pindex = partition(A, start, end)
        quick_sort(A, start, pindex - 1)
        quick_sort(A, pindex + 1, end)

    return A

print quick_sort([10, 1, 2, 1, 1, 1], 0, 5)
def分区(A、开始、结束):
枢轴=A[结束]
pindex=开始
对于范围内的i(开始、结束):

如果一个[i]基于动画,他们每次都会选择第一个元素作为
,然后根据
的值交换值。轴左侧的值应较小,右侧的值应较大。我没有透露答案,但下面的代码只是你的一个开端

下面的代码片段用于
快速排序
算法

def partition(A, start, end):
    pivot = A[end]
    pindex = start
    for i in range(start, end):
        if A[i] <= pivot:
            A[i], A[pindex] = A[pindex], A[i]
            pindex += 1

    A[pindex], A[end] = A[end], A[pindex]
    return pindex

def quick_sort(A, start, end):

    if start < end:
        pindex = partition(A, start, end)
        quick_sort(A, start, pindex - 1)
        quick_sort(A, pindex + 1, end)

    return A

print quick_sort([10, 1, 2, 1, 1, 1], 0, 5)
def分区(A、开始、结束):
枢轴=A[结束]
pindex=开始
对于范围内的i(开始、结束):

如果一个[i]显然是问题被严重破坏了:

(CODEVAL的反馈系统)


很抱歉没有尽快找到,但是显然谷歌没有正确地索引GetSuccessment发布系统;因为我以前在他们的网站上或通常通过谷歌寻求帮助的所有尝试都没有显示这个结果。> 显然,问题已经严重恶化:

(CODEVAL的反馈系统)


很抱歉没有尽快找到,但是显然谷歌没有正确地索引GetSuccessment发布系统;因为我以前在他们的网站上或通常通过谷歌寻求帮助的所有尝试都没有显示这个结果。>谢谢你的回复。我已经实现并测试了Lumoto方法(正如您在这里所做的),它没有按照动画对列表进行排序。我假设分区步骤是确定排序过程中找到多少枢轴的关键,这将改变我关于CodeEvals'的答案?我的学校很糟糕,所以我们没有以任何方式学习过这类课程,所以我不确定我说的是否正确=/我刚刚用CodeEval仔细检查了一下,分区算法似乎确实影响了一些测试的结果。他们提供的示例数据与Lumoto方法(如此处所示)正确配合,并正确确定了正确的枢轴数。但是他们在测试答案时使用的其他数据不同:我的上一个实现得到了45/100。我无法用错误的“结果”页面格式来检查错误,因此我无法知道它们的不同之处=/谢谢你的回复。我已经实现并测试了Lumoto方法(正如您在这里所做的),它没有按照动画对列表进行排序。我假设分区步骤是确定排序过程中找到多少枢轴的关键,这将改变我关于CodeEvals'的答案?我的学校很糟糕,所以我们没有以任何方式学习过这类课程,所以我不确定我说的是否正确=/我刚刚用CodeEval仔细检查了一下,分区算法似乎确实影响了一些测试的结果。他们提供的示例数据与Lumoto方法(如此处所示)正确配合,并正确确定了正确的枢轴数。但是他们在测试答案时使用的其他数据不同:我的上一个实现得到了45/100。我无法用错误的“结果”页面格式来检查错误,因此我无法知道它们的不同之处=/