时间复杂度和空间复杂度是衡量算法的重要指标,对于排序算法这一特定算法,这篇文章整理了一些常见的基础性的指标,后续将以此为基础进行进一步的解释。


文章目录

  • 时间复杂度
  • 空间复杂度
  • 稳定性
  • 最优时间复杂度
  • 最差时间复杂度
  • 比较次数
  • 交换次数
  • 参考内容

时间复杂度

  • 时间复杂度:在满足n足够大的前提下,上述常见的算法时间复杂度由小到大依次为:Ο(1)< Ο(log2n)< Ο(n)< Ο(nlog2n)< Ο(n2)< Ο(n3)< Ο(nk) < Ο(2n) ,随着问题规模 n 的不断增大,时间复杂度不断增大,算法的执行效率越低

详细可参看:https://blog.csdn.net/liumiaocn/article/details/108087625

空间复杂度

  • 空间复杂度:算法使用的存储空间大小和输入规模之间的关系,在满足n足够大的前提先,空间复杂度能够在一定程度上显示算法对于存储的使用效率。

详细可参看:https://blog.csdn.net/liumiaocn/article/details/108087625


稳定性

  • 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。比如正常的冒泡排序是稳定的,但是如果将冒泡升序排序的算法中的>改为>=,则会由稳定排序算法变为不稳定排序算法。

最优时间复杂度

  • 最优时间复杂度:时间复杂度一般是一个平均的时间复杂度,而最优时间复杂度则是指所有情况都利于提升排序速度的情况下,最优的情况下,当前算法所能到的算法效率,能够在一定程度上说明此算法的潜力。

最差时间复杂度

  • 最差时间复杂度:时间复杂度一般是一个平均的时间复杂度,而最差时间复杂度则是指所有情况都不利于提升排序速度的情况下,最差的情况下,当前算法所可能的算法效率,能够在一定程度上说明此算法受外界影响的风险程度。

比较次数

  • 比较次数:比较是排序的重要操作,比较次数本身也能直接地反应排序算法的复杂程度和效率,平均比较次数、最优比较次数和最差比较次数能够在一定程度上反应算法的一些特点。

交换次数

  • 交换:交换也是排序的重要操作,交换次数本身也能直接地反应排序算法的复杂程度和效率,平均交换次数、最优交换次数和最差交换次数能够在一定程度上反应算法的一些特点。

参考内容

https://baike.baidu.com/item/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E7%A8%B3%E5%AE%9A%E6%80%A7/9763250?fr=aladdin

算法基础:排序算法:7个常用的衡量指标相关推荐

  1. 基础排序算法详解与优化

    文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...

  2. C语言基础排序算法-选择排序

    C语言基础排序算法-选择排序 什么是选择排序? 选择排序(Selection sort)是一种简单直观的排序算法,第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从 ...

  3. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  4. php四种基础排序算法的运行时间比较

    /*** php四种基础排序算法的运行时间比较* @authors Jesse (jesse152@163.com)* @date 2016-08-11 07:12:14*/ //冒泡排序法 func ...

  5. 基本的排序算法php,php四种基础排序算法

    原标题:php四种基础排序算法 曾经有网友问我关于面试题的问题,今天就发一个面试题笔试经常会出的排序算法,大家可以参考一下,如有问题可以给我留言. /** * php四种基础排序算法的运行时间比较 * ...

  6. 【Java】基础排序算法-插入排序

    基础排序算法-------插入排序 实现过程: 插入排序的过程就像整理桥牌的过程:每次将待排元素中的第一个元素插入到有序区间的合适位置,为了给当前待排元素腾出位置,需要将有序区间内所有大于待排元素的其 ...

  7. 基础排序算法及其优化(Java)

    文章预览: 一.基础排序算法 1.冒泡排序 冒泡排序的优化 1.添加flag 2.减少循环次数(后面已有序) 2.选择排序 选择排序优化 3.插入排序 插入排序的进阶 - 二分插入排序 注:冒泡排序v ...

  8. 基础排序算法--冒泡法

    基础排序算法–冒泡法 我认为的冒泡法就是一个一个挨着比,相邻的两个数比较,如果是从小到大排序,那么第一次走到最后的就是最大的数字,反之. 动图理解 代码解析 package ccc;import ja ...

  9. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  10. 数据结构与算法之排序算法

    数据结构与算法之排序算法 排序算法的介绍 ​ 排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排序的过程. 排序的分类 1)内部排序:指将需要处理的数据都加载到内部 ...

最新文章

  1. 阿里云ONS而微软Azure Service Bus体系结构和功能比较
  2. 访问有用户名和密码的网络共享,实现数据导入
  3. 三十八、网络通信Socket模块实现文件传输
  4. RTMP在NGINX的启动
  5. wifi信号增强android,WiFi信号增强大师APP
  6. python游戏猫咪藏在哪个房间_tes体系风格已经定型,EZ加猫咪似乎成唯一解,在藏还是真没了?...
  7. 爱思助手短信备份到安卓_爱思助手肿么将短信导入iphone
  8. L - Who is the Champion
  9. redis学习笔记——应用场景
  10. [css] 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?
  11. 二维数组子数组矩形和
  12. 从openjdk.java.net获取OpenJDK8源码并编译(amd64/aarch64/arm64)
  13. java smtp服务器,用Java实现SMTP服务器
  14. 谷歌flutter_在Flutter中使用Google Pay Through Stripe接受付款
  15. Sniffer抓包教程
  16. win10计算机管理界面模糊,Win10电脑屏幕显示模糊
  17. redis关于hash的常用命令
  18. spacedesk-把ipad变成显示器-真香经验全面分享
  19. power Designer VBS 脚步 通过 excel 生成实体,不用一个一个的输入。
  20. ssm南工二手书交易平台 毕业设计-附源码172334

热门文章

  1. Excel高级函数应用总结
  2. 计算机二级ms高级应用考试内容,计算机二级《MSOffice》高级应用考试大纲
  3. 如何使用阿里云矢量图标库
  4. 蜗牛星际A单千兆群晖系统崩溃恢复记录
  5. 优秀关卡设计的十个原则
  6. java简单记事本代码_Java实现的简易记事本
  7. WGS84坐标系、Web墨卡托、GCJ02坐标系、BD09坐标系—常用坐标系简述
  8. 23种设计模式JAVA案例
  9. linux journalctl使用详解
  10. 自适应滤波器设计及matlab实现,[转载]自适应滤波器设计与MATLAB