使用Hoare分区的Quicksort,我如何选择数据透视会影响我的python工具

问题描述 投票:0回答:2

[我正在尝试使用https://stackoverflow.com/a/41211360/301513中的代码在python中使用Hoare分区来实现Quicksort。>

但是当我将pivot = a_list[low]更改为pivot = a_list[high]时,我就无法使其正常工作!

有人可以帮忙吗?

def quicksort(a_list):
    """Hoare partition scheme, see https://en.wikipedia.org/wiki/Quicksort"""
    def _quicksort(a_list, low, high):
        # must run partition on sections with 2 elements or more
        if low < high: 
            p = partition(a_list, low, high)
            _quicksort(a_list, low, p)
            _quicksort(a_list, p+1, high)
    def partition(a_list, low, high):
        pivot = a_list[low] # changing to pivot = a_list[high] breaks the program
        while True:
            while a_list[low] < pivot:
                low += 1
            while a_list[high] > pivot:
                high -= 1
            if low >= high:
                return high
            a_list[low], a_list[high] = a_list[high], a_list[low]
            low += 1
            high -= 1
    _quicksort(a_list, 0, len(a_list)-1)
    return a_list

[我正在尝试使用Python中的Hoare分区来实现Quicksort,使用https://stackoverflow.com/a/41211360/301513中的代码,但是当我将ivot = a_list [low]更改为pivot = a_list [high] I时。 ..

python algorithm quicksort
2个回答
0
投票

似乎足以进行更正:


0
投票

将名称更改为a [],lo,hi,p(枢轴)

© www.soinside.com 2019 - 2024. All rights reserved.