快速排序 - python3实现

# 快速排序算法 一 常规套路
def qsort(lst, start, end):
	i = start
	j = end
	p = lst[start]
	while i < j:
		while i < j and lst[j] > p:
			j -= 1
		while i < j and lst[i] < p:
			i += 1
		if i < j and lst[i] == lst[j]:
			i += 1
		else:
			lst[i], lst[j] = lst[j], lst[i]
	if i-1 > start:
		lst = qsort(lst, start, i-1)
	if j+1 < end:
		lst = qsort(lst, j+1, end)
	return lst

# 快速排序算法 二 分而治之
def quick_sort(lst):
    if len(lst)>=2:
        mid = lst[0] # lst[len(lst)//2]
        left, right = [], []
        lst.remove(mid)
        for i in lst:
            if i >= mid:
                right.append(i)
            else:
                left.append(i)
        return quick_sort(left) + [mid] + quick_sort(right)
    else:
        return lst

# 一句话搞定
quick_sort = lambda array: array if len(array) <= 1 else quick_sort([item for item in array[1:] if item <= array[0]]) + [array[0]] + quick_sort([item for item in array[1:] if item > array[0]])

if __name__ == '__main__':
    qlist = [54, 26, 54, 93, 17, 77, 54, 31, 44, 54, 55, 20] 
    a = quick_sort(qlist)
    print(a)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏木不是木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值