经常使用的排序算法的时间复杂度和空间复杂度

排序法

最差时间分析 平均时间复杂度 稳定度 空间复杂度
冒泡排序 O(n2) O(n2) 稳定 O(1)
高速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)
选择排序 O(n2) O(n2) 稳定 O(1)
二叉树排序 O(n2) O(n*log2n) 不一顶 O(n)

插入排序

O(n2) O(n2) 稳定 O(1)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
希尔排序 O O 不稳定 O(1)

1、时间复杂度 
(1)时间频度 一个算法运行所耗费的时间,从理论上是不能算出来的,必须上机运行測试才干知道。但我们不可能也没有必要对每一个算法都上机測试,仅仅需知道哪个算法花费的时间多。哪个算法花费的时间少就能够了。而且一个算法花费的时间与算法中语句的运行次数成正比例,哪个算法中语句运行次数多。它花费时间就多。

一个算法中的语句运行次数称为语句频度或时间频度。记为T(n)。

(2)时间复杂度 在刚才提到的时间频度中。n称为问题的规模,当n不断变化时。时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。

为此,我们引入时间复杂度概念。

普通情况下,算法中基本操作反复运行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 
在各种不同算法中,若算法中语句运行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不同样时,时间复杂度有可能同样,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度同样,都为O(n2)。 按数量级递增排列。常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...。 k次方阶O(nk),指数阶O(2n)。

随着问题规模n的不断增大。上述时间复杂度不断增大。算法的运行效率越低。 2、空间复杂度 与时间复杂度类似。空间复杂度是指算法在计算机内运行时所需存储空间的度量。记作: S(n)=O(f(n)) 我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。

讨论方法与时间复杂度类似,不再赘述。 
(3)渐进时间复杂度评价算法时间性能   主要用算法时间复杂度的数量级(即算法的渐近时间复杂度)评价一个算法的时间性能。

2、类似于时间复杂度的讨论,一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也经常简称为空间复杂度。 
空间复杂度(Space Complexity)是对一个算法在执行过程中暂时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间。包含存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在执行过程中暂时占用的存储空间这三个方面。

算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过參数表由调用函数传递而来的,它不随本算法的不同而改变。存储算法本身所占用的存储空间与算法书写的长短成正比。要压缩这方面的存储空间,就必须编写出较短的算法。算法在执行过程中暂时占用的存储空间随算法的不同而异,有的算法仅仅须要占用少量的暂时工作单元,并且不随问题规模的大小而改变。我们称这样的算法是“就地/"进行的,是节省存储的算法,如这一节介绍过的几个算法都是如此;有的算法须要占用的暂时工作单元数与解决这个问题的规模n有关。它随着n的增大而增大,当n较大时,将占用较多的存储单元,比如将在第九章介绍的高速排序和归并排序算法就属于这样的情况。

如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时。可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正比时。可表示为0(10g2n)。当一个算法的空I司复杂度与n成线性比例关系时。可表示为0(n).若形參为数组,则仅仅须要为它分配一个存储由实參传送来的一个地址指针的空间,即一个机器字长空间;若形參为引用方式,则也仅仅须要为其分配存储一个地址的空间。用它来存储相应实參变量的地址,以便由系统自己主动引用实參变量。

转载于:https://www.cnblogs.com/bhlsheji/p/5158474.html

【计算机基础】 经常使用的排序算法的时间复杂度和空间复杂度相关推荐

  1. 常用的排序算法的时间复杂度和空间复杂度

    常用的排序算法的时间复杂度和空间复杂度                                           1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出 ...

  2. 常用的排序算法的时间复杂度和空间复杂度 .

    常用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 ...

  3. 各种常用排序算法的时间复杂度和空间复杂度

    https://blog.csdn.net/jiajing_guo/article/details/69388331 一.常用排序算法的时间复杂度和空间复杂度表格 二.特点 1.归并排序: (1)n大 ...

  4. c语言验证完成排序算法的时间,排序算法的时间复杂度和空间复杂度

    常用的内部排序方法有:交换排序(冒泡排序.快速排序).选择排序(简单选择排序.堆排序).插入排序(直接插入排序.希尔排序).归并排序.基数排序(一关键字.多关键字). 一.冒泡排序: 1.基本思想: ...

  5. 常见排序算法的时间复杂度、空间复杂度、稳定性比较

    常见排序算法的时间空间复杂度.稳定性比较 一.排序算法比较 注: 1.归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高. 2. 基数排序时间复杂度为O(N*M),其中N为数据个数 ...

  6. 各种排序算法的时间复杂度和空间复杂度-记忆方式

    直选冒,三朴素 (直接插入排序,简单选择排序,冒泡排序是三种朴素算法,一般是o(n)~o(n^2)) 简选排,序无关 (简单选择排序算法与开始序列无关,最好最坏都是o(n^2)) 其余五,数优化 (其 ...

  7. 各个排序算法的时间复杂度、稳定性、快排的原理以及图解

    目录 一.数据结构的八大排序算法总结笔记: 1.常见的数据结构排序算法如下图所示: 2.常见数据结构排序算法的时间复杂度.空间复杂度.稳定性介绍如下图所示: 二.排序算法逐一介绍: 1.直接插入排序: ...

  8. 各个排序算法及其时间复杂度

    各个排序算法及其时间复杂度 一.内部排序: 1.稳定的排序算法 1.1 冒泡排序 1.1.1 冒泡排序流程 1.1.2 冒泡排序的实现 1.2 插入排序 1.2.1 插入排序流程 1.2.2 插入排序 ...

  9. vant coupon 时间戳如何计算_计软考研双日练 | 如何计算拓扑排序算法的时间复杂度?...

    ☝☝☝ 软件工程考研独家平台 撰稿 | 康康哥 编辑 | 丽丽姐 本文由懂计算机.软件工程的博士师哥原创 双日练:NO.20200610 若将n个顶点e条弧的有向图采用邻接表存储,则拓扑排序算法的时间 ...

最新文章

  1. iOS自定义简易刷新视图(仿MJRefresh)
  2. python selenium自动化获取oracle,python27+selenium3自动化登录测试
  3. 字符文本中的字符太多_文本对抗---字符级别的攻击
  4. 基于nanopi的即时通讯系统
  5. 四种最令人讨厌的编程语言:Java、Javascript、C++和Perl
  6. python request timeout_Python - aiohttp请求不断超时(Python - aiohttp requests continuously time out)...
  7. jquery $.ajax
  8. Julia: Array 很不同!
  9. java反编译工具jd-gui下载与使用
  10. 神通数据库常用命令行
  11. 高效实用Chrome浏览器,这份Top 20插件榜对你肯定有帮助
  12. 更改eclipse炫酷主题
  13. 【DGND数字地与AGND模拟地】
  14. 扫描转换html,HTML5/CSS3 3D雷达扫描动画
  15. java泊松分布随机数_泊松分布随机数
  16. C#中的事件(event)
  17. 用户增长因果推断概念
  18. 寒假2019培训:白银莲花池-usaco2007(洛谷P2411)
  19. 【算法复习】迭代改进
  20. 2023版大数据学习路线图(适合自学)

热门文章

  1. Mongo 常用的server命令
  2. @Styles.Render
  3. ITK+VTK+VS环境搭建.Q:vs编译出问题参见VTK(一)哈。
  4. DataTable随机复制一行给新的DataTable
  5. 荐礼啦php知道与问问的采集插件
  6. JS:ES6-5 rest参数与扩展运算符
  7. 【零基础学Java】—对象数组(十三)
  8. Spring boot实体类中常用基本注解
  9. 为什么中国有很大一部分人不愿使用windows10?
  10. 为什么新闻联播的主持人不低头念稿,难道都背下来了?