快速排序:空间复杂度为O(log n),时间复杂度为[O(n log n), O(n^2)],算法不稳定,不具有适应性
1、从序列中取出一个数作为基准数
2、分区,比基准数大的放基准数右边,小的放左边
3、递归,重复第二步操作,直到基准数的左边和右边分别只剩一个数
算法的稳定性是指:对于待排序的序列中,相同项的原来次序不能被改变
算法的适应性是指:算法因为原序列有序而更高效
def quick_sort(lst, l, r):
if l > r:
return
i, j = l, r
pivot = lst[i]
while i < j:
while i < j and lst[j] >= pivot:
j -= 1
if i < j:
lst[i] = lst[j]
i += 1
while i < j and lst[i] <= pivot:
i += 1
if i < j:
lst[j] = lst[i]
j -= 1
lst[i] = pivot
quick_sort(lst, l, i-1)
quick_sort(lst, i+1, r)
print lst