美文网首页
排序算法-快排

排序算法-快排

作者: yulongsun | 来源:发表于2016-09-05 11:36 被阅读97次

1. 快排基本特征:

  • 时间复杂度:O(nlogn)
    最坏:O(n^2)
  • 空间复杂度: O(nlogn)
  • 不稳定排序

2. 描述:

快速排序是基于 分治模式 处理的;

  • 思路:
    对于典型子数组A[p...r]排序的分治过程的三个步骤:
    1. 分解:
      A[p...r]被划分为两个子串A[p...q-1]和A[q+1...r]使得被划分的两个子串A[p...q-1]<=A[q]<=A[q+1...r];
    2. 解决:
      通过递归调用排序,对子序列A[p...q-1]和A[q+1...r]排序;
    3. 合并。

3. 算法

4. 时间复杂度

快排的时间复杂度跟数据序列的初始位置枢轴的选取有关。

  • 最好情况:
    每趟排序把序列分成两个长度相近的子序列;
    比较次数为O(nlogn),时间复杂度是(nlogn)

  • 最坏情况:
    每趟排序将序列分成长度差异很大的两个子序列;
    例如:
    {1,2,3,4,5,6}
    1,{2,3,4,5,6}
    当数据已排序时,如选取序列的第一个值作为基准值(枢轴),那么每一趟排序得到的两个子序列都是长度分别为0和n-1
    这样必须经过n-1趟排序才能完成,因此比较次数为:
    c=Σ(n-i)= n(n-1)/2 = n^2/2
    基准值可以有多种选法,如可以选中间值。但是由于初始序列是随机的,所以无论如何选取基准值,都存在最坏情况。

  • 快排是不稳定排序;

5. 快排改进

参考:
浅谈算法和数据结构: 四 快速排序
九大基础排序总结与对比
快速排序算法
8大排序算法图文讲解

相关文章

  • 常用排序算法

    常见排序算法 本文介绍6种常用排序算法,包括冒泡、选择、插入、快排、堆排、希尔排序。下面从排序算法的原理、解题步骤...

  • 2018-07-13

    快速排序算法 快排普通版本: 快排优化版本: 测试代码:

  • 基本排序算法

    冒泡算法 简单选择排序 堆排序 快排 归并排序

  • Objective-c各种排序算法

    Objective-C排序算法 快排 快速排序是面试中经常会被问的一个排序算法。一般要求手写。快排是对冒泡排序的一...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 数组排序问题(二)

    目录 荷兰国旗问题 随机快排 堆排序 排序算法的稳定性及其汇总 工程中的综合排序算法 比较器的使用 桶排序、计数排...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 排序算法-快排

    1. 快排基本特征: 时间复杂度:O(nlogn)最坏:O(n^2) 空间复杂度: O(nlogn) 不稳定排序 ...

  • 06-20:刷题综合三:快排

    快排: 1、快速排序 2、快速排序寻找第K个大 3、最小的K个数 1、手写快排算法 class Solution:...

  • 算法

    【原创】以下是自己写的某些算法的JS实现 快排 (一) 快排(二) 希尔排序 插排 二分插排 归并排序

网友评论

      本文标题:排序算法-快排

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