2.1算法的时间复杂度与空间复杂度

news2024/9/22 11:22:55

本篇博客介绍算法的时间复杂度与空间复杂度

一、算法效率

算法好坏从时间空间两个维度衡量

二、时间复杂度

1.概念

时间复杂度是算法中基本操作的执行次数,定量描述了算法的运行时间

2.注意

(1)时间复杂度是偏保守的估计量,可理解为最低的预期
(2)时间复杂度是一个数量级,表征大概执行次数,采用大O渐进表示法

  • 如果是常数次计算,时间复杂度为O(1)
  • 在运行次数函数中,只保留次数最高的那一项
  • 要省略最高阶项前面的常数
    常见的时间复杂度
    (3)时间复杂度实际上是一个函数f(x),注意与平时编程时调用的函数进行区分,是算法精确的执行次数

3.例子

(1)冒泡排序的时间复杂度

void BubbleSort(int* a, int n) 
{ 
	assert(a); 
	for (size_t end = n; end > 0; --end) 
	{ 
		int exchange = 0; 
		for (size_t i = 1; i < end; ++i) 
		{ 
			if (a[i-1] > a[i]) 
			{ 
				Swap(&a[i-1], &a[i]); 
				exchange = 1; 
			} 
		} 
		if (exchange == 0) 
			break; 
	} 
} 

冒泡排序的时间复杂度

(2)二分查找的时间复杂度

int BinarySearch(int* a, int n, int x) 
{ 
	assert(a); 
	int begin = 0; 
	int end = n-1; 
	while (begin <= end) 
	{ 
		int mid = begin + ((end-begin)>>1); 
		if (a[mid] < x) 
		begin = mid+1; 
		else if (a[mid] > x) 
		end = mid-1; 
		else 
		return mid; 
	} 
	return -1; 
}

二分查找的时间复杂度
注意:只有以2为底的对数才可以简写成logN

(3)递归函数的时间复杂度

long long Fac(size_t N) 
{ 
	if(0 == N) 
	return 1; 
	return Fac(N-1)*N; 
} 

递归函数的时间复杂度

三、空间复杂度

1.概念

空间复杂度是算法运行过程中临时占用存储空间大小的量度,算的是变量的个数,研究额外申请的空间

2.例子

long long Fac(size_t N) 
{ 
	if(N == 0) 
	return 1; 
	return Fac(N-1)*N; 
}

解析:从Fac(N)到Fac(0)共调用Fac()函数N+1次,数量级是N,因此空间复杂度为O(N)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2048542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue项目中引入字体文件样式

需求:关于一些样式需要自定义的,所以需要ui提供字体文件,然后引入项目中,就可实现自定义 首先看一下实现效果图: 第一步:新建一个字体样式文件用于放字体文件和css样式 font.css文件: /* 数字特殊字体 */ font-face {/*给字体命名*/font-family: DINCondBold;/*引入字体文件*…

课堂助手小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教师管理&#xff0c;专业信息管理&#xff0c;部门信息管理&#xff0c;课程信息管理&#xff0c;教学内容管理&#xff0c;学生作业管理&#xff0c;系统管理 微信端账号功能包…

防止内存泄漏的神兵利器 — 智能指针

1.内存泄漏 1.1什么是内存泄漏 当我们在写C/C程序的时候&#xff0c;难免会出现内存泄漏的错误&#xff0c;因为C/C不像Java语言那样&#xff0c;拥有自己的垃圾回收机制&#xff0c;C/C中对于资源的管理&#xff0c;完全交给程序员自己打理&#xff0c;也就是说使用C/C的程序…

Ubuntu下NFS和SSH服务

本篇文章记录Ubuntu下如何对NFS和SSH服务进行配置和开启。 目录 一、NFS服务 二、SSH服务 1、安装SSH服务 2. 启动和检查SSH服务 3. 配置SSH服务 4. 连接到SSH服务 5. 设置防火墙 6. 测试连接 三、结语 一、NFS服务 NFS&#xff08;Network File System&#xff0…

设计模式(2)行为型模式和七大原则

1、目标 本文的主要目标是学习设计模式的行为型模式并举例说明 2、行为型模式 2.1 观察者模式&#xff08;Observer&#xff09; 观察者模式是对象之间存在一对多的依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖它的对象都会得到通知并自动更新&…

京东数据编织

计算引擎是Hbase 中间计算结果的物化【就是存下来】 自动物化 在这里插入图片描述

设计模式在芯片验证中的应用——状态

一、状态模式 状态模式是一种行为设计模式&#xff0c; 让你能在一个对象的内部状态变化时改变其行为&#xff0c; 使其看上去就像改变了自身所属的类一样。 在RTL中可能存在复杂的有限状态机FSM&#xff0c;在任何一个特定状态中&#xff0c; RTL的行为都不相同&#xff0c;…

pip install 遇到ValueError: check_hostname requires server_hostname的解决办法

我需要下载Cython来将py编译成c&#xff0c;结果在pip install的时候报错这个&#xff1a; ERROR: Exception: Traceback (most recent call last):File "F:\Anaconda3\envs\DouyinLive32\lib\site-packages\pip\_internal\cli\base_command.py", line 173, in _mai…

《人类群星闪耀时》

人类群星闪耀时&#xff0c;历史的舞台上&#xff0c;你未尝不是其中一颗。 【拜占庭的沦陷】具备决断力、创新力、执行力的领导者起到关键作用。 【享德尔的复活】人的心力一旦强大&#xff0c;便可创造非凡之事。 【一夜天才】闪耀的星离不开黑夜的衬托。所谓的英雄&#x…

HarmonyOS Developer之生成二维码

qrcode 生成并显示二维码 属性 样式 创建qrcode组件 在pages/index目录下的hml文件中创建一个qrcode组件 HTML <!-- xxx.hml--> <div class"container"><qrcode value"Hello"></qrcode> </div>CSS /* xxx.css */ .cont…

uniapp 微信小程序生成水印图片

效果 源码 <template><view style"overflow: hidden;"><camera device-position"back" flash"auto" class"camera"><cover-view class"text-white padding water-mark"><cover-view class"…

基于JAVA的社团管理系统的设计与实现

TOC springboot270基于JAVA的社团管理系统的设计与实现 第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供…

html+css 实现hover 边框彩色按钮

前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 一、效果二、原理解析1.这是一个,hover后按钮边框==变彩色==的效果。每个按钮都是1个but…

matlab关于结构体的创建

网上搜了很多结构体的创建&#xff0c;都是什么student.name student.age,或者struct. 自己摸索了一下&#xff0c;根据你想要创建结构体的格式可以划分以下两类 clear all clcdata [1, 2, 2, 1;2, 1, 1, 3;4, 3, 2, 2];data1 [0, 2, 2, 1;0, 1, 1, 3;4, 3, 0, 2;4, 3, 0, 2…

解锁企业数字化转型的终极指南:《数字时代的敏捷架构》深度解读

在当前数字化浪潮的冲击下&#xff0c;企业面临着前所未有的挑战与机遇。为了解决这一难题&#xff0c;The Open Group 和 AZone 联手推出了《数字时代的敏捷架构》&#xff0c;《数字时代的敏捷架构》汇集了全球顶尖专家的智慧和经验&#xff0c;是企业数字化转型的必读之作。…

【IEEE独立出版】第四届人工智能、虚拟现实与可视化国际学术会议(AIVRV 2024)

第四届人工智能、虚拟现实与可视化国际学术会议&#xff08;AIVRV 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Virtual Reality and Visualization 会议时间&#xff1a;2024年11月1日-3日 会议地点&#xff1a;中国-南京…

C语言第20天笔记

文件操作 概述 什么是 文件 文件时保存在外存储器上&#xff08;一般代指磁盘&#xff0c;也可以是U盘、移动硬盘等&#xff09;的数据的集合。 文件操作体现在哪几个方面 1. 文件内容的读取 2. 文件内容的写入 数据的读取和写入可被视为针对文件进行输入和输出的操作&a…

函数递归那些事

什么是递归 递归就是函数自己调用自己&#xff0c;而递归的本质其实是一种解决问题的方法。 递归的思想 递归的思想是把复杂问题大事化小的过程。即把一个大型复杂的问题不断的拆分成与原问题相似&#xff0c;但规模较小的子问题&#xff0c;直到子问题不能被拆分&#xff0…

Python学习day16-类与对象

这里写目录标题 类示例 成员方法self关键字 类与对象构造方法其他类内置方法&#xff08;魔术方法&#xff09;_str_符号_Lt_符号le小于等于比较eq比较运算小结 类 在Python中&#xff0c;class&#xff08;类&#xff09;是一种用于创建对象的模板或蓝图。它封装了数据&#…

MySQL9.0安装教程

软件介绍 MySQL是一个关系型数据库管理系统&#xff0c;是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系数据库管理系统) 应用软件之一。 软件下载 https://pan.qu…