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