zoukankan      html  css  js  c++  java
  • Python实现快速排序算法

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

    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. 对于小数组,插入排序更快。或者根据实际情况采用三取样切分和熵最优的排序。

  • 相关阅读:
    简单函数调用分析
    从函数层面看栈溢出
    C语言漏洞基础(一)
    C语言函数篇(一)
    开发一种填表机器
    阿米洛varmilo键盘
    Flops
    助力高校计算机教育 —— 码云为老师推出免费高校版
    Numerical Methods LetThereBeMath
    Git Cookbook
  • 原文地址:https://www.cnblogs.com/jddreams/p/13073009.html
Copyright © 2011-2022 走看看