快速排序算法
复习了下快排写法,顺便练练刚学的python
不过python里传递列表,原来是类似于直接传地址的么
def quick_sort(self, arr, left, right):
mid = left
l = left
r = right
while l < r:
while r > l:
if arr[r] < arr[mid]:
x = arr[r]
arr[r] = arr[mid]
arr[mid] = x
mid = r
break
r -= 1
while l < r:
if arr[l] > arr[mid]:
x = arr[l]
arr[l] = arr[mid]
arr[mid] = x
mid = l
break
l += 1
if left < right:
self.quick_sort(arr, left, mid-1)
self.quick_sort(arr, mid+1, right)
简短的写法
def quick_sort(self, li):
if len(li) < 2:
return li
else:
tmp = li[0]
less = [i for i in li[1:] if i <= tmp]
more = [i for i in li[1:] if i > tmp]
return self.quick_sort(less) + [tmp] + self.quick_sort(more)

浙公网安备 33010602011771号