美文网首页
算法图解 (四)

算法图解 (四)

作者: EruDev | 来源:发表于2018-05-29 18:22 被阅读0次

    第四章 快速排序

    分而治之

    这个概念是书中一直提到的, 个人理解就是把问题分解出来, 抽出来一小块一小块解决

    递归

    第三章就讲到递归了, 两个关键点找出基线条件和递归条件

    记得之前写过一个妹纸图爬虫, 主要就是用的递归调取本身, 来爬取下一页的图片。 整个站都可以爬下来, 前提是网站反爬不厉害...

    快速排序

    简称快排, 一种排序算法。 在平均情况下, 排序 n 个项目要 O(nlogn)。 最坏的情况下则需要 O(n2)。 事实上,快速排序 O(nlogn) 通常明显比其他算法更快, 因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成

    代码:

    # coding: utf-8
    
    """
    快速排序
    """
    
    def quick_sort(arr):
        if len(arr) < 2:
            return arr
        else:
            temp = arr[0]
            less = [i for i in arr[1:] if i < temp]
            greater = [i for i in arr[1:] if i > temp]
    
            return quick_sort(less) + [temp]+ quick_sort(greater)
    
    arr = [32, 4, 54, 65, 5, 864]
    print(quick_sort(arr))
    

    小结

    • 分而治之将问题逐步分解. 使用分而治之处理列表的时候, 基线条件可能是空数组或只包含一个元素的数组
    • 实现快速排序, 请随机的选择用作基准值的元素。 快速排序的平均运行时间 O(nlogn)

    相关文章

      网友评论

          本文标题:算法图解 (四)

          本文链接:https://www.haomeiwen.com/subject/yxwajftx.html