Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以pivot作为列表中第一个元素的快速排序递归函数不排序_Python_Sorting_Recursion_Quicksort - Fatal编程技术网

Python 以pivot作为列表中第一个元素的快速排序递归函数不排序

Python 以pivot作为列表中第一个元素的快速排序递归函数不排序,python,sorting,recursion,quicksort,Python,Sorting,Recursion,Quicksort,我的快速排序算法代码基于: def分区(左、左、右): 数据透视索引=左 pivotValue=L[左] 对于范围内的i(左、右+1): 如果L[i]

我的快速排序算法代码基于:

def分区(左、左、右): 数据透视索引=左 pivotValue=L[左] 对于范围内的i(左、右+1): 如果L[i] 对于第一轮partition(),它似乎工作得很好,但是当对左侧进行排序时,它会更改pivotIndex,因此它从错误的索引开始对右侧子数组进行排序。有没有关于如何生成此代码的建议?

打印快速排序(L)
L.insert(0,L.pop(i))
-从技术上讲,这不再是QS。这应该是一个O(1)操作,而不是O(n)。
def partition(L, left, right):
    pivotIndex = left
    pivotValue = L[left]

    for i in range(left,right+1):

        if L[i] < pivotValue:
            L.insert(0, L.pop(i))
            pivotIndex += 1

    return pivotIndex

def _quicksort(data,left,right):

    if left < right:
        p = partition(data, left, right)

        _quicksort(data, left, p-1) # sorting of the left side of the subarrays
        _quicksort(data, p+1, right) # sorting of the right side of the subarrays

def quicksort(data):

    L = list(data)
    left = 0
    right = len(L)-1

    return _quicksort(L, left, right)

if __name__ == "__main__":
    L = [3,4,5,2,3,5,5,2,1,7,2]
    print quicksort(L)