python中快速排序的函数_Python3 实现快速排序

速排序是一种常用的排序算法,比选择排序快得多。例如,C语言标准库中的函数qsort 实现的就是快速排序。快速排序也使用了D&C。(分而治之)

(1) 找出简单的基线条件;

(2) 确定如何缩小问题的规模,使其符合基线条件。 D&C并非可用于解决问题的算法,而是一种解决问题的思路。我们再来看一个例子。 给定一个数字数组。

d82145f94444ffd730cd36a7e85e8819.png

话不多说直接上代码:

import random

def quiksort(arr):

"""

实现快速排序

:param arr:

:return:

"""

if len(arr) < 2:

return arr # 基线条件:为空或只包含一个元素的数组是“有序”的

else:

pivot = arr[0] # 递归条件

less = [x for x in arr[1:] if x <= pivot] # 由所有小于基准值的元素组成的子数组

large = [z for z in arr[1:] if z > pivot] #由所有大于基准值的元素组成的子数组

print('less', arr, less)

print('large', arr, large)

print('分割线'.center(30, '#'))

return quiksort(large) + [pivot] + quiksort(less) # 递归调用

if __name__ == '__main__':

new = [random.choice(range(10)) for x in range(10)]

print(new)

# new = [1, 3, 5]

print(quiksort(new))

输出结果是:

d75c37a3afed318cf15ecdb54a3a4e15.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值