zoukankan      html  css  js  c++  java
  • 麻省理工学院公开课-第四讲:快速排序 及 随机化 算法

    http://deepin.iteye.com/blog/1392647

    http://www.cnblogs.com/banli/archive/2013/06/02/3113338.html

    快速排序

    • 分治思想
    • 原地排序
    • 很实用

    分治思想:

    1. 分,选择一个基准元素(pivot),将数组分为两部分,左边是比基准元素小的数,右边是比基准元素大的数(基准元素通常选第一个或最后一个).
    2. 治,递归地对两个数组进行快速排序.

    时间复杂度:

    • 最坏的情况: Θ(n2). 原因是选择了最小或最大的元素作为基准元素。
    • 最好的情况:Θ(n lg n).

    快速排序与归并排序的比较:

      两者都能达到Θ(n lg n)的时间复杂度,而且归并排序最差也能达到Θ(n lg n). 快速排序最差的时间复杂度为Θ(n2). 但是,在实际使用当中,快速排序通常要比归并排序快3倍左右,而且快排是就低排序,在缓存和虚拟内存中实现较好。

    算法改进:随机化快速排序

    • 在划分子数组时,随机选择基准元素
    • 划分子数组足够小时,直接采用插入排序
  • 相关阅读:
    大一励志的我,现在已经大三了
    Jenkins+K8s实现持续集成
    Jenkins搭建自动化测试环境
    软件开发式样书 6
    软件开发式样书 5
    软件开发式样书 4
    软件开发式样书 3
    软件开发式样书 2
    软件开发式样书 1
    Git学习笔记
  • 原文地址:https://www.cnblogs.com/cainiao-xf/p/4570281.html
Copyright © 2011-2022 走看看