快速排序in-place
时间: 2023-10-14 19:24:01 浏览: 203
快速排序in-place是一种使用原始数组而不是创建新数组的快速排序算法。在原始数组内部进行排序,避免了需要额外的空间来存储排序后的数组。这种算法使用两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置。然后,它选择一个基准元素,将数组分为两个部分,其中左边的元素小于基准元素,右边的元素大于基准元素。然后,递归地对左右子数组进行排序,直到整个数组被排序。
以下是快速排序in-place的Python实现:
```
def quicksort_inplace(arr, start, end):
if start >= end:
return
pivot = arr[end]
left = start
right = end - 1
while left <= right:
while left <= right and arr[left] < pivot:
left += 1
while left <= right and arr[right] > pivot:
right -= 1
if left <= right:
arr[left], arr[right] = arr[right], arr[left]
left += 1
right -= 1
arr[left], arr[end] = arr[end], arr[left]
quicksort_inplace(arr, start, left - 1)
quicksort_inplace(arr, left + 1, end)
```
这个实现使用了递归,并将基准元素放在最后一个位置。它使用两个指针来遍历数组,将小于基准元素的元素移到左边,将大于基准元素的元素移到右边。然后,它将基准元素放在正确的位置上,并递归地对左右子数组进行排序。
阅读全文