开发者社区> 问答> 正文

为什么快速排序是不稳定的算法

我用free pascal

展开
收起
知与谁同 2018-07-22 15:59:36 7647 0
5 条回答
写回答
取消 提交回答
  • 静静的看着你们
    一组数据用快速排序究竟用多少次能排完。这是不确定的。在最坏的情况下比其它的排序算法还要慢,当然这种几率出现的情况很少。因此说它不稳定,不是说它排序的结果不稳定,而是时间复杂度不稳定。
    2019-07-17 22:50:03
    赞同 展开评论 打赏
  • 不稳定只是说在排序没有完成之前(假设说:降序排列)会暂时的出现小的排在前面的情况

    没有排完就中断,不能保证一部分是有序的,所以称为不稳定

    大学教科书: 数据结构里面写的,不信去查
    2019-07-17 22:50:03
    赞同 展开评论 打赏
  • vire 说的正确。

    -------------------------

    你这个说法是错的。

    2019-07-17 22:50:03
    赞同 展开评论 打赏
  • en en
    2019-07-17 22:50:03
    赞同 展开评论 打赏
  • Nothing for nothing.
    排序算法不稳定的含义是:

    在排序之前,有两个数相等.
    但是在排序结束之后,它们两个有可能改变顺序.

    比如说:
    在一个待排序队列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面.这个时候,我们说这种算法是不稳定的.
    (只要有这种可能性,我们就说算法是不稳定的.)

    注: 算法的不稳定性,与所用的语言没有关系的.

    那么,快速排序为什么不稳定呢?

    我们来看看快速排序的过程:(还是借用之前的那个假设,假设A,B相等,并和其它一堆数据一起参加排序.)

    假设此时的快排是小于等于关键字为排在前面的一组组,大于为另外排在后面的一组.

    在选取一个数出来分组的时候,如果选到了A,那么在B<=A的情况下,B将会排在A的前面.

    因为有这样的_可能性_,所以说我们这种算法是不稳定的.

    注:请参考快排的具体算法.
    另外,TO 朱_大志同学,可能我们两个的教材有一定的差别.
    2019-07-17 22:50:02
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载