算法的概述

1.算法分类:

十种常见算法可以分为两大类:

  • 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能超过Q(nlogn),因此也称为非线性时间比较类排序。
  • 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下限, 以线性时间运行, 因此也称为线性时间非比较类排序。

2.算法复杂度:

算法复杂度

排序方法

时间复杂度(平均)

时间复杂度(最坏)

时间复杂度(最好)

空间复杂度

稳定性

插入排序

O(n2)

O(n2)

O(n)

O(1)

稳定

希尔排序

O(n1.3)

O(n2)

O(n)

O(1)

不稳定

选择排序

O(n2)

O(n2)

O(n2)

O(1)

不稳定

堆排序

O(nlog2n)

O(nlog2n)

O(nlog2n)

O(1)

不稳定

冒泡排序

O(n2)

O(n2)

O(n)

O(1)

稳定

快速排列

O(nlog2n)

O(n2)

O(nlog2n)

O(nlog2n)

不稳定

归并排序

O(nlog2n)

O(nlog2n)

O(nlog2n)

O(n)

稳定

计数排序

O(n+k)

O(n+k)

O(n+k)

O(n+k)

稳定

桶排序

O(n+k)

O(n2)

O(n)

O(n+k)

稳定

计数排序

O(n*k)

O(n*k)

O(n*k)

O(n+k)

稳定

3.相关概念:

  • 稳定:如果a 原本在 b 前面,而a=b, 排序之后a 任然在b前面。

  • 不稳定:如果 a 原本在 b 前面,而 a = b, 排序之后 a 可能会出现在 b 的后面。

  • 时间复杂度:对排列数据的总的操作次数。反映当 n 变化时,操作次数呈现什么规律。

  • 空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模 n 的函数。

 4.算法的选择:

  • 若n较小( 如n≤50), 可采用直接插入或直接选择排序;

  • 若文件初始状态基本有序(指正序),则应选用直接插入、冒泡或随机的快速排序为宜;

  • 若n较大,则应采用时间复杂度为O(n log n) 的排序方法:快速排序、堆排序或归并排序;

  • 若n较小,考虑稳定性,可以使用:基数排序、计数排序或者桶排序。

    其中 插入算法和 归并算法 对重复率比较高的排序比较友好;冒泡算法不适合大量数据。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值