#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: json_steve
def quick_sort(li, start, end):
if start >= end:
return
# 定义下标
low = start
hight = end
# 标准最开始从左面开始
mid = li[low]
while low < hight:
# 从右面开始比较并且向左移动,找到比mid小的数据放到low处
while low < hight and li[hight] >= mid:
hight -= 1
# 循环结束,找到小于mid的值或者没有
li[low] = li[hight]
# 从左向右移动
while low < hight and li[low] < mid:
low += 1
li[hight] = li[low]
# 循环结束
li[low] = mid
# 递归继续排序
# 递归继续排序左边和右边的数据
quick_sort(li, start, low - 1)
quick_sort(li, low + 1, end)
if __name__ == '__main__':
l = [5,4,3,1,1]
# 6 [5,4,4,8,9,7]
quick_sort(l, 0, len(l)-1)
print(l)
# 最坏时间复杂度: O(n^2)
# 最优时间复杂度: O(nlogn)
# 稳定性: 不稳定
python快排
最新推荐文章于 2020-06-22 18:12:47 发布