时间复杂度和空间复杂度[数据结构]

參考:本文为小甲鱼教学视频的学习笔记。

1、为什么要学习时间复杂度和空间复杂度?你说一个算法好另外一个算法不好,有什么推断根据?哪个算法效率高?怎么推断?那么就要学习时间和空间复杂度了。

思考:学习每个知识之前都应该要考虑一下为什么要学习,学了有什么用处,什么场景下去用。

2、算法的效率高通常是指算法的运行时间,度量一个算法的运行时间有2种方式:

  • 事后统计法:须要编写測试程序。万一不好花费大量的时间精力,赔了娘子又折兵(而且測试环境不同区别不是一般的大)
  • 事前统计法:程序编写前,使用统计方法对算法进行估算

思考:百度搜索事前避孕药和事后避孕药,会有更深刻的理解

3、一个高级语言编写的程序在计算机上执行时所消耗的时间取决于下列因素:

  • 算法採用的策略,方案(方法思路)
  • 编译产生的代码质量(编译器的优劣,编译语言的优劣)
  • 问题的输入规模(输入量的多少,须要一个循环)
  • 机器运行指令的速度(硬件环境)

4、我们研究算法的复杂度,側重的是研究算法随着输入规模扩大增长量的一个抽象。而不是精确地定位须要运行多少次。

由于假设这种话,我们就又不得不考虑编译器优化的问题。然后就没然后了。

思考:由于外部因素的影响非常大。非常难精确定位运行次数。那就对增长量抽象出来进行对照未尝不是一个好的方案。

5、怎样对增长量进行抽象:忽略程序所用的语言、忽略程序跑在什么样的机器上、不计哪些循环索引的增长和循环终止条件、变量声明、打印结果。

我们仅仅关心它所实现的算法。

思考:分析程序的执行时间,最重要的是把程序看成独立于编程语言的算法或者一系列的步骤。

6、我们在分析一个算法的执行时间时:重要的是把基本操作的数量和输入模式关联起来。

思考:分析随着输入量的添加。操作数量的增长情况用以推断算法效率高低。

7、函数的渐进增长:对于给定的两个函数f(n)和g(n),假设存在一个整数N,使得对于全部的n>N。f(n)总是比g(n)大,那么。我们说f(n)的增长渐进快于g(n)。与最高次项线程的常熟并不重要,也能够忽略。常数也能够忽略。推断一个算法的好不好。仅仅通过少量的数据是不能够推断的。以免以偏概全。

思考:推断算法效率是,函数中的常熟和其它次要项经常能够忽略,而更应该关注主项(也就是最高项)的阶数

时间: 2024-10-11 12:47:33

时间复杂度和空间复杂度[数据结构]的相关文章

0526.第二章:时间复杂度和空间复杂度[数据结构]

参考:本文为小甲鱼教学视频的学习笔记. 1.为什么要学习时间复杂度和空间复杂度?你说一个算法好另外一个算法不好,有什么判断依据?哪个算法效率高?怎么判断?那么就要学习时间和空间复杂度了. 思考:学习每一个知识之前都应该要考虑一下为什么要学习,学了有什么用处,什么场景下去用. 2.算法的效率高一般是指算法的执行时间,度量一个算法的执行时间有2种方式: 事后统计法:需要编写测试程序,万一不好花费大量的时间精力,赔了娘子又折兵(并且测试环境不同差别不是一般的大) 事前统计法:程序编写前,使用统计方法对

数据结构和算法之时间复杂度和空间复杂度

前言 上一篇<数据结构和算法>中我介绍了数据结构的基本概念,也介绍了数据结构一般可以分为逻辑结构和物理结构.逻辑结构分为集合结构.线性结构.树形结构和图形结构.物理结构分为顺序存储结构和链式存储结构.并且也介绍了这些结构的特点.然后,又介绍了算法的概念和算法的5个基本特性,分别是输入.输出.有穷性.确定性和可行性.最后说阐述了一个好的算法需要遵守正确性.可读性.健壮性.时间效率高和存储量低.其实,实现效率和存储量就是时间复杂度和空间复杂度.本篇我们就围绕这两个"复杂度"展开

一 数据结构的概念,时间复杂度和空间复杂度

一. 什么是数据结构: 对到底什么是数据结构这个概念,一直有很多不同的解释,也有许多不同的争论,这里只代表了我个人的认识. 数据结构:我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某 个功能(比如查找某个元素,删除某个元素等)而执行的相应操作,这个相应的操作也叫做算法. 1.算法的实现是依据不同的数据结构的. 2.算法:是对特定问题求解步骤的一种描述,以下特征:有穷性,确定性,可行性,输入和输出: 二. 时间复杂度和空间复杂度: (

[算法技术]算法的时间复杂度与空间复杂度

1.时间复杂度 算法的时间复杂度是衡量一个算法效率的基本方法.在阅读其他算法教程书的时候,对于算法的时间复杂度的讲解不免有些生涩,难以理解.进而无法在实际应用中很好的对算法进行衡量.            <大话数据结构>一书在一开始也针对算法的时间复杂度进行了说明.这里的讲解就非常明确,言简意赅,很容易理解.下面通过<大话数据结构>阅读笔记的方式,通过原因该书的一些简单的例子和说明来解释一下算法的时间复杂度和它的计算方法.          首先从基本定义下手,来了解一下什么是“

算法基础 -- 简介时间复杂度与空间复杂度

算法是为求解一个问题所需要遵循的.被清楚地指定的简单指令的集合.对于一个问题,一旦给定某种算法并且确定其实正确的,那么重要的一步就是确定该算法将需要多少诸如时间或空间等资源量的问题,这就是时间复杂度和空间复杂度存在的意义.常用时间复杂度和空间复杂度来衡量不同算法的优劣. 一.从数学的角度理解 O(n).Ω(n).o(n)和Θ(n) 通常,我们以函数所处理的数据量来表示算法的性能,也就是说,对于大小为 n 的数据,我们用函数 f(n) 来表示它的算法性能.在很多情况下,我们可以完全确定 f 的具体

时间复杂度、空间复杂度,如何”不复杂“地学?

时间复杂度.空间复杂度,如何”不复杂“地学? 2018-10-28 13:04独立/大一/大学 作者 | Rocky0429 责编 | 胡巍巍 写在之前 我们都知道,对于同一个问题来说,可以有多种解决问题的算法.尽管算法不是唯一的,但是对于问题本身来说相对好的算法还是存在的,这里可能有人会问区分好坏的标准是什么?这个要从「时效」和「存储」两方面来看. 人总是贪婪的,在做一件事的时候,我们总是期望着可以付出最少的时间.精力或者金钱来获得最大的回报,这个类比到算法上也同样适用,那就是花最少的时间和最

精简版时间复杂度与空间复杂度(五分钟掌握)

前言 一个算法的优劣好坏,会决定一个程序运行的时间.空间.也许当小数据量的时候,这种影响并不明显,但是当有巨量数据的时候,算法的好坏带来的性能差异就会出天差地别.可以说直接影响了一个产品的高度和广度.每个程序员都想用最优的算法解决问题,我们期待自己写出的代码是简洁.高效的.但是如何评判一个算法的好坏呢?时间复杂度和空间复杂度就是一个很好的标准. 1. 时间复杂度 1.1 概念 执行算法所需要的计算工作量 1.2 基本执行次数T(n) 根据计算,得出的该算法在输入数据量为n时的,实际执行次数 1.

算法的时间复杂度和空间复杂度

<算法的时间复杂度和空间复杂度合称为算法的复杂度> --->算法的时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模

算法时间复杂度和空间复杂度详解

算法的时间复杂度和空间复杂度合称为算法的复杂度. 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了.并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法中的语句执行次数称为语句频度或时间频度.记为T(n). (2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时