参考资料:https://www.jianshu.com/p/2b2f1f79984e
参考资料里的伪快排代码错误,我对其进行了更改。Python3代码如下:
# 先来一个伪快排
def quick_sort1(nums):
if len(nums) <= 1:
return nums
else:
pivot = nums[0]
less_than_pivot = [x for x in nums[1:] if x <= pivot]
more_than_pivot = [x for x in nums[1:] if x > pivot]
return quick_sort1(less_than_pivot)+[pivot]+quick_sort1(more_than_pivot)
print(quick_sort1([2,3,7,2,3,8,9,7,6,4,4]))
# c风格的快排
def Partidion(nums, left, right):
pivotkey = nums[left]
while left < right:
while left < right and nums[right] >= pivotkey:
right -= 1
nums[left] = nums[right]
while left < right and nums[left] <= pivotkey:
left += 1
nums[right] = nums[left]
nums[left] = pivotkey
return left
def quick_sort2(nums,left,right):
if left < right:
pivot = Partidion(nums,left,right)
quick_sort2(nums,left,pivot-1)
quick_sort2(nums,pivot+1,right)
return nums
a = [2,3,7,2,3,8,9,7,6,4,4]
print(quick_sort2(a,0,len(a)-1))