【问题标题】:Why this property of quick sort? [closed]为什么要快速排序? [关闭]
【发布时间】:2016-01-10 06:45:25
【问题描述】:

为什么快速排序以相同的速度对给定的一组已排序的项目进行排序和反向排序的项目。

为什么不喜欢堆排序、插入排序或选择排序?

【问题讨论】:

  • 你说的“等速”是什么意思?等于什么?
  • 快速排序的运行时间很大程度上取决于枢轴的选择。至少说出五种流行的方法,并思考它们对快速排序在有序和反向序列上的运行时间的影响。评论归并排序。
  • @greybeard mergesort 对于这两种情况也有相同的速度,对吗?对于快速排序,它取决于枢轴..
  • @greybeard - 对排序或反向排序的数据进行合并排序大约完成了一半的比较,但移动次数相同。

标签: algorithm sorting data-structures


【解决方案1】:

标准选择排序、堆排序和快速排序不像插入排序那样adaptive

sorting algorithms比较表。
例如,选择排序的最佳和最坏情况都具有 O(n^2) 的复杂度 - 每个循环运行总是遍历预定的数组。

快速排序的速度取决于为给定数据集正确选择分区元素。排序顺序可能会影响,如果分区是愚蠢的(例如,一个总是得到一块的第一个元素),否则最坏(二次)情况的概率相当小。

如果您需要对几乎已排序的数据集进行排序,请选择一些自适应排序,例如自然归并排序(或小数据集的插入排序)。

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多