排序算法-总分析

一、排序算法分类

所谓排序,是整理表中的记录,使之按关键字递增(或递减)有序排列,排序数据中可以存在相同关键字的记录。本文仅考虑递增排序。

常见有以下几种内排序算法:
在这里插入图片描述

二、排序算法分析

(可以点对应排序名链接进入查看详细分析)

排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性
直接插入排序O(n2)O(n2)O(n)O(1)稳定
折半插入排序O(n2)O(n2)O(nlog2n)O(1)稳定
希尔排序O(n1.3)O(1)不稳定
冒泡排序O(n2)O(n2)O(n)O(1)稳定
快速排序O(nlog2n)O(n2)O(nlog2n)O(nlog2n)不稳定
简单选择排序O(n2)O(n2)O(n2)O(1)不稳定
堆排序O(nlog2n)O(nlog2n)O(nlog2n)O(1)不稳定
归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)稳定
基数排序O(d(n+r))O(d(n+r))O(d(n+r))O( r )稳定

三、备注

  • 什么是时间复杂度和空间复杂度?参考我的另一篇文章
  • 什么叫内排序?

    在排序过程中,若整个表都是放在内存中处理,排序时不涉及数据的内、外存交换,则称之为内排序;反之,若排序过程中要进行数据的内、外存交换,则称之为外排序。

  • 什么是排序算法的稳定性?

    如果待排序的表中,存在有多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,则称这种排序方法是稳定的。
    反之,若具有相同关键字的记录之间的相对次序发生变化,则称这种排序方法是不稳定的。

  • 排序算法稳定性的意义?

    举一个实际的例子:要给电商的订单排序,订单有两个属性,一个是下单时间,一个是订单金额。
    要求:对订单根据金额从小到大排序,金额相同的话按照下单时间再排序。
    那我们的做法可能先根据金额排序,之后对于每个金额相同的小区间按照下单时间排队,这种思路简单,但是实现稍显复杂
    借助稳定排序算法,我们可以先按照订单时间排序,之后再用稳定爱旭按照金额排序。稳定排序算法可以保证金额相同的两个对象再排序后的前后顺序不变。
    稳定性的优点就体现出来了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值