用python实现快速排序
# 快速排序
def quick_sort(elems):
quick_sort_rec(elems, 0, len(elems) - 1)
def quick_sort_rec(elems, left, right):
if left >= right:
return None
i = left
j = right
k = elems[i]
while i < j:
while i < j and elems[j] >= k:
j -= 1
if i < j:
elems[i] = elems[j]
i += 1
while i < j and elems[i] <= k:
i += 1
if i < j:
elems[j] = elems[i]
j -= 1
elems[i] = k
quick_sort_rec(elems, left, i-1)
quick_sort_rec(elems, i+1, right)
**快速排序的思想: **
- 对当前待排序列,选区第一个元素记为k
- 在两边设立两个指针,先从右边向左遍历,如果找到比k小的,则将该元素赋值给i指向的位置,更新ij
- 再从左向右遍历,如果找到比k大的,则将该元素赋值给j 指向的位置,更新ij
- 当 i = j 的时候, 这一遍完成。将K赋值给当前i 指向的位置。
- 这样k已经放到了正确的位置。接下来递归排序k左边的序列,k右边的序列。