首页 > 其他分享 >数据结构复习计划之复杂度分析(时间、空间)

数据结构复习计划之复杂度分析(时间、空间)

时间:2024-07-11 19:27:23浏览次数:13  
标签:执行 ++ 复习计划 算法 时间 数据结构 复杂度 度量

第二节:算法 时间复杂度和空间复杂度 算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。 算法可以有三种表示形式:

  •  伪代码
  •  自然语言
  •  流程图

算法的五个特性

① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

② 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。

③ 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。

④ 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。

⑤ 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

算法和程序是两个不同的概念。 一个计算机程序是对一个算法使用某种程序设计语言的具体实 现。算法必须可终止意味着不是所有的计算机程序都是算法。

好算法标准

① 正确性: 算法应满足具体问题的需求。

② 可读性: 算法应容易供人阅读和交流。可读性好的算法有助于对算法的

理解和修改。

③ 健壮性: 算法应具有容错处理。当输入非法或错误数据时,算法应能

适当地作出反应或进行处理,而不会产生莫名其妙的输出结果。

④ 通用性: 算法应具有一般性 ,即算法的处理结果对于一般的数据集合

都成立。

⑤ 效率与存储量需求: 效率指的是算法执行的时间;存储量需求指算法

执行过程中所需要的最大存储空间。一般地,这两者与问题的规模有关。

♥效率 指的是算法执行的时间存储量需求指算法执行过程中所需要的最大存储空间 算法效率的度量 算法执行时间需通过依据该算法编制的程序在计算机上运行所消耗的时间来度量。 其方法通常有两种: 事后统计:计算机内部进行执行时间和实际占用空间的统计。 问题:必须先运行依据算法编制的程序;依赖软硬件环境,容易掩盖 算法本身的优劣;没有实际价值。 算法效率的度量 撇开软硬件等有关部门因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用n表示),表示成是问题规模的函数。 算法效率的度量 表示时间复杂度的阶有: O(1) :常量时间阶 O (n):线性时间阶 O(㏒n) :对数时间阶 O(n㏒n) :线性对数时间阶 O (nk): k≥2 ,k次方时间阶 其关系为: O(1)<O(㏒n)<O(n)<O(n㏒n)<O(n2)<O(n3) 指数时间的关系为: O(2 n )<O(n!)<O(n n ) ⭐常量阶 {++x; s=0 ;} 将x自增看成是基本操作,则语句频度为1,时间复杂度为O(1) 。 将s=0也看成是基本操作,则语句频度为2,时间复杂度仍为O(1)。 线性阶 for(i=1; i<=n; ++i) { ++x; s+=x ; } 语句频度为:2n,其时间复杂度为:O(n) ,即为线性阶。平方阶 for(i=1; i<=n; ++i){ for(j=1; j<=n; ++j) { ++x; s+=x ; } } 语句频度为:2n2 ,其时间复杂度为:O(n2) ,即为平方阶。三次方阶 两个n阶方阵的乘法 for(i=1,i<=n; ++i) for(j=1; j<=n; ++j) { c[i][j]=0 ; for(k=1; k<=n; ++k) c[i][j]+=a[i][k]*b[k][j] ; } 由于是一个三重循环,每个循环从1到n,则总次数为: n×n×n=n3 时 间复杂度为T(n)=O(n3) 小结: 空间复杂度的度量 空间复杂度(Space complexity) :是指算法编写成程序后, 在计算机中运行时所需存储空间大小的度量。记作: S(n)=O(f(n)) 其中: n为问题的规模(或大小) 空间复杂度的度量 for(i=1; i<=n; ++i) for(j=1; j<=n; ++j) { ++x; s+=x ; } 临时变量为:i , j ,s,x;空间复杂度为:O(1) ,即常量阶。 复习考研数据结构第二天!!!

标签:执行,++,复习计划,算法,时间,数据结构,复杂度,度量
From: https://blog.csdn.net/2301_79582459/article/details/140359983

相关文章

  • 【数据结构】双向链表
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~......
  • 数据结构(复杂度)
    复杂度算法在编写成可执行程序后,运⾏时需要耗费时间资源和空间(内存)资源。因此衡量⼀个算法的好坏,⼀般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量⼀个算法的运⾏快慢,⽽空间复杂度主要衡量⼀个算法运⾏所需要的额外空间。在计算机发展的......
  • 嵌入式学习——C语言数据结构(三)
    七、赋值运算符    1、+=     加且赋值         C += A;等价于C=C+A    2、-=      减且赋值         C -= A;等价于C=C-A    3、*=      乘且赋值      ......
  • 数据结构(Java):集合类LinkedList&集合类Stack
    1、集合类LinkedList1.1什么是LinkedListLinkedList的底层是一个双向链表的结构(故不支持随机访问):在LinkedList中,定义了first和last,分别指向链表的首节点和尾结点。每个节点中有一个成员用来存储数据,还有两个指针域next和prev分别存储下一个节点和上一个节点的地址。Link......
  • 285个地级市出口产品质量及技术复杂度(2011-2021年)
    出口产品质量与技术复杂度:衡量国家竞争力的关键指标出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规,而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一个国家在出口商品中的技术......
  • 数据结构第19节 排序算法(1)
    冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序步骤详解假设我们有以下数组:int[]arr={64,34,25,12,22,11,90}......
  • 【数据结构】12.排序
    一、排序的概念及其运用1.1排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j......
  • 【数据结构】—— 双向链表
    文章目录1、双向链表的概念2、双向链表的接口实现2.1结构2.2初始化申请节点2.3插入数据尾插头插指定位置之后插入数据2.4删除数据尾删头删指定位置删除2.5查找2.6打印2.7销毁3、链表和顺序表的区别4、问题与思考1、双向链表的概念双向链表(DoublyLinkedList)是......
  • 浙大数据结构慕课课后习题(02-线性结构2 一元多项式的乘法与加法运算)
    题目要求设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项......
  • 数据结构--第八章排序
    注:内容参考王道2024考研复习指导以及《数据结构》一、排序的基本概念排序(sort),就是重新排列表中的元素,使表中的元素满足按关键字有序的过程。排序算法的评价指标时间复杂度空间复杂度稳定性算法的稳定性,若待排序表中有两个元素Ri​和Rj​,其对应的关键字相同即keyi​=keyj......