美文网首页
数据结构_排序_快速排序

数据结构_排序_快速排序

作者: arkulo | 来源:发表于2015-09-13 10:54 被阅读77次

github地址:
https://github.com/arkulo56/thought/blob/master/software/dataStruct/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84_%E6%8E%92%E5%BA%8F_%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F.md

数据结构_排序_快速排序

定义

  • 将任务进行分割,然后各个击破
  • 在某种特定的情况下,是最快的算法
  • 基本原理:
    • 设定一个基准值(也就是轴)
    • 将比轴小的值,移到轴的左边,形成左子数列
    • 将比轴大的值,移到轴的右边,形成右子数列
    • 分别对左子数列和右子数列做上述三个步骤(递归),直到左子数列或右子数列只剩一个值或没有数值
  • 快速排序的效率:选择的基准值越接近数列平均值越好
  • 基准值(轴)的选择方式:
    • 固定位置:第一位,或者最后一位
    • 随机选择一位
    • 随机取三个值,然后取中间值
  • 不稳定算法

算法实现

<img src="https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/sort_fast_1.png" width="500" />

<img src="https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/sort_fast_2.png" width="500" />

代码中,Partition函数实现了排序和形成左右子数列,是快速排序的关键,下图展示了该函数第一次执行的过程,便于大家理解快速排序

<img src="https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/sort_fast.png" width="400" />

相关文章

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

  • 排序算法6:快速排序

    数据结构与算法 快速排序为应用最多的排序算法,因为快速二字而闻名。快速排序和归并排序一样,采用的都是分治思想。 分...

  • 玩转算法面试:(三)LeetCode数组类问题

    数组中的问题其实最常见。 排序:选择排序;插入排序;归并排序;快速排序查找:二分查找法数据结构:栈;队列;堆…… ...

  • 算法(3)- 数组

    数组中的问题其实最常见如:排序(选择排序、插入排序、归并排序、快速排序)、查找(二分查找法)、数据结构(栈、队列、...

  • 排序算法

    常考排序 快速排序 归并排序 归并排序求逆序数对 堆排序 堆排序是指利用堆这种数据结构所设计的一种排序算法。 堆积...

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 音视频开发之旅(25) 算法系列-堆排序

    目录 基本数据结构 堆排序 资料 收获 前面我们学习实践了冒泡排序和快速排序,这篇我们继续学习另外一种排序算法:堆...

  • 2018-06-30

    排序算法之堆排序 堆排序是利用堆的数据结构而设计的一种排序算法,堆排序是一种选择排序。可以利用数组的特点快速定位制...

网友评论

      本文标题:数据结构_排序_快速排序

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