python实现快速排序算法_Python实现快速排序算法

快速排序有多种实现方式,最容易理解得是:分治 + 迭代,只需要四步:

在数列之中,任意选择一个元素作为基准或比较值

数列中其他所有元素都和这个基准值进行比较:小的移到基准值的左边,大的移到基准值的右边

以基准值左右两边的子列作为新数列,进行递归排序,直到所有分区内最多一个元素为止

分解完成再一层一层返回,返回规则是:左边分区 + 基准值 + 右边分区

1495620-20200609154640266-1549019303.png

python 实现:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

def quick_sort(data):

if len(data) >= 2:

# 选取第一个元素为基准值

pivot = data[0]

# 定义基准值左右两侧的列表

left, right = [], []

# 从原始数组中移除基准值

data.remove(pivot)

for num in data:

if num >= pivot:

right.append(num)

else:

left.append(num)

return quick_sort(left) + [pivot] + quick_sort(right)

else:

return data

array = [23,36,15,17,3,94,36,145,45,5,47,45,8,35,8]

print(quick_sort(array))

注意:

采用分治方式的快速排序算法在处理大数据集性能较好,小数据集性能一般

对于小数组,插入排序更快。或者根据实际情况采用三取样切分和熵最优的排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值