当前位置: 首页 > news >正文

【数据结构和算法】一、算法复杂度:时间复杂度和空间复杂度)

1、算法复杂度

1.1 概念

        算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。

1.2 评价指标

如何去衡量不同算法之间的优劣?

从算法所占用的「时间」和「空间」两个维度去考量。

  • 时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
  • 空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。

        因此,评价一个算法的效率主要是看它的时间复杂度和空间复杂度情况。然而,有的时候时间和空间却又是「鱼和熊掌」,不可兼得的,那么我们就需要从中去取一个平衡点。

下面我来分别介绍一下「时间复杂度」和「空间复杂度」的计算方式。

1.3 时间复杂度

1.3.1 什么是时间复杂度

我们想要知道一个算法的「时间复杂度」,很多人首先想到的的方法就是把这个算法程序运行一遍,那么它所消耗的时间就自然而然知道了。

这种方式可以吗?当然可以,不过它也有很多弊端。

这种方式非常容易受运行环境的影响,在性能高的机器上跑出来的结果与在性能低的机器上跑的结果相差会很大。而且对测试时使用的数据规模也有很大关系。当然,还需考虑算法还没有办法完整的去运行的情况。

因此,另一种更为通用的方法就出来了:「 大O(符号)表示法 」࿰


http://www.mrgr.cn/news/58284.html

相关文章:

  • 3.cpp基本数据类型
  • 序列的定义与使用
  • 【认知只能】编译器2
  • leetcode:34. 在排序数组中查找元素的第一个和最后一个位置(python3解法)
  • 机房巡检机器人有哪些功能和作用
  • C++学习路线(二十二)
  • Electron 是一个用于构建跨平台桌面应用程序的开源框架
  • Docker:容器化的革命
  • 【EndNote使用教程】创建文献库、导入文献、文献分类
  • DAY62WEB 攻防-PHP 反序列化CLI 框架类PHPGGC 生成器TPYiiLaravel 等利用
  • 设备管理智能化:中小企业的Spring Boot系统
  • 介绍一款Java开发的企业接口管理系统和开放平台
  • 27.8 把target做一致性哈希进行分发
  • 双十一电容笔选哪个好?!西圣、益博思、吉玛仕电容笔实测对比!
  • 区块链行业低迷的原因及未来发展展望
  • 【贪心算法】(第十四篇)
  • 落实安全左移迫在眉睫 | 伊朗APT34组织针对阿联酋及海湾关键基础设施发动攻击
  • uniapp:sqlite最详细教程,小白可直接粘贴复制
  • Linux 学习笔记(十七)—— 文件系统
  • MultipartFile文件与传递body并存问题
  • RK3568 android11 usb接口TP与电磁笔触点上报优先级问题
  • 【运维心得】U盘启动安装Dell服务器踩坑指南
  • 【JavaScript】JavaScript 进阶-2-构造函数数据常用函数(更新中)
  • Python:背景知识及环境安装
  • Linux内核常见的网络丢包场景分析,零基础入门到精通,收藏这一篇就够了
  • 强推!清华大佬强力打造,绝对是2024年人工智能入门天花板教程!