码迷,mamicode.com
首页 > 编程语言 > 详细

Python实现快速排序算法

时间:2020-06-09 16:19:34      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:class   python   图片   sort   ima   quic   分治   img   列表   

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

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

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

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

  4. 分解完成再一层一层返回,返回规则是:左边分区 + 基准值 + 右边分区
    技术图片

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))

注意:

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

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

Python实现快速排序算法

标签:class   python   图片   sort   ima   quic   分治   img   列表   

原文地址:https://www.cnblogs.com/jddreams/p/13073009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!