数据结构与算法——时间与空间复杂度
目录
时间复杂度
空间复杂度
时间复杂度
大O记法
执行次数=执行时间
大O记法有以下几个规则:
①用常数1取代运行时间中的所有加法常数;
如:O(5),用O(1)来表示。
②在修改后的运行次数中,只保留高阶项;
如:O(2n^2+3n+1),则时间复杂度为O(n^2)
③如果最高阶项存在,且常数因子不为1,则去除与这个项相乘的常数;
如:O(5n),则时间复杂度应该为O(n)
常见的时间复杂度:
描述 | 增长的数量级 | 说明 | 举例 |
常数级别 | 1 | 普通语句 | 将两个数相加 |
对数级别 | logN | 二分策略 | 二分查找 |
线性级别 | N | 循环 | 找出最大元素 |
线型对数级别 | NlogN | 分治思想 | 归并排序 |
平方级别 | N^2 | 双层循环 | 检查所有元素对 |
立方级别 | N^3 | 三层循环 | 检查所有三元组 |
指数级别 | 2^N | 穷举查找 | 检查所有子集 |
复杂程度从低到高依次为:
O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)
空间复杂度
通常选择空间换时间,一般说复杂度是指时间复杂度
java中有以下常见的内存占用情况
①java中基本数据类型内存占用情况:
数据类型 | 内存占用字节数 |
---|---|
byte | 1 |
short | 2 |
int | 4 |
long | 8 |
float | 4 |
double | 8 |
boolean | 1 |
char | 2 |
②计算机访问内存都是一次一个字节
③一个引用(机器地址)需要8个字节表示
如:例如: Date date = new Date(),则date这个变量需要占用8个字节来表示
④创建一个对象,比如new Date(),除了Date对象内部存储的数据(例如年月日等信息)占用的内存,该对象本身也有内存开销,每个对象的自身开销是16个字节,用来保存对象的头信息。
⑤一般内存的使用,如果不够8个字节,都会被自动填充为8字节
数据结构与算法——时间与空间复杂度相关推荐
- 排序--Bubble的优化和性能(算法时间、空间复杂度、稳定性)分析
一.算法基本思想 (1)基本思想 冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分:下一次继续 ...
- 数据结构与算法 1.算法与数据结构的关系,以及算法时间、空间复杂度的概 念及其度量方法
文章目录 前言 一. 数据结构 1.1 概念: 1.2 数据结构分类(逻辑结构和物理结构两大类) 1.2.1 逻辑结构 1.2.2 物理结构 二. 算法 2.1 概念 2.2 算法初体验 2.3 算法 ...
- day001:数据结构和算法-时间频度和时间复杂度
1.初识数据结构和算法 简单认识中:ArrayList的查询快点,插入慢.LinkedList查询慢,插入快.但是结论是将数据的大小为基础前提,相对的. -1^n 计算问题 编程问题:求(-1)^0 ...
- 循环首次适应算法_数据结构与算法之2——排序问题
排序真的是数据结构与算法中的重中之重啊,无论是对编程能力的提升,以后工作后的应用,或者是应对面试的时候都是经常需要用到的.基本的几个经典排序一定要做到滚瓜烂熟,能够做到给你一个具体的排序算法题,一定能 ...
- 明翰数据结构与算法笔记V0.8(持续更新)
文章目录 前言 数据结构 `线性表` `数组` `链表` `栈与队列` [串/字符串] 树 并查集 `二叉树` [二叉排序树/二叉搜索树] `红黑树` 红黑树操作 霍夫曼树 `堆` [大/小]根堆 可 ...
- 数据结构与算法的时间空间复杂度
提到数据结构与算法就不得不提时间复杂度和空间复杂度,本人看大部分文章介绍都比较晦涩难懂,就想着用简单的代码示例快速让你理解数据结构与算法的时间空间复杂度. 首先,时间复杂度表示的是使用某个数据结构或者 ...
- a*算法的时间复杂度_数据结构与算法系列——时间、空间复杂度
数据结构和算法本质就是帮我们用最快的时间和最少的空间来执行我们的代码.所以,执行效率是衡量一个算法的非常重要的指标.那如何来计算你的算法代码的执行效率呢?这就需要时间.空间复杂度来分析了. 有人可能会 ...
- 一层循环时间复杂度_数据结构与算法系列——时间、空间复杂度
数据结构和算法本质就是帮我们用最快的时间和最少的空间来执行我们的代码.所以,执行效率是衡量一个算法的非常重要的指标.那如何来计算你的算法代码的执行效率呢?这就需要时间.空间复杂度来分析了. 有人可能会 ...
- 「算法与数据结构」时间与空间复杂度
写在前面 可能有些人会吐槽,学算法有什么用,顶多就是去面试大厂的时候能用上,大厂面试算法也只是强中筛强的一个敲门砖而已,我又不去面大厂,不用学它,真的是这样吗? 肯定不是,在计算机行业发展,不管是前端 ...
最新文章
- Python 生成MYSQL inser语句
- C++STL的queue容器
- android10 内部存储,Android的内部存储和外部存储
- Ubuntu14.04部署CEPH
- VS2005 Extjs智能提示插件
- oracle sequence sql server,SQL Server 实现oracle的sequence方法示例
- ORA-12514: TNS:listener does not currently know of service …
- BROTHER 废墨清零教学
- 管理会计习题集及答案 5-7章
- 方舟手游怎么在服务器用gg修改器,方舟手游gg修改器脚本
- cad插入块_CAD施工制图常见问答(一)
- 老板面试怎么谈?千万不要走近误区。
- Open Drain vs Push Pull
- linux里rw文件如何打开,RW 文件扩展名: 它是什么以及如何打开它?
- 服务器运维环境安全体系(上篇)
- 机器学习基本 之 名词解释
- 商业智能,数据仓库,ETL,数仓调度工具informatica介绍手账(三)
- Android接入极光消息推送
- 震惊,用过微粒贷的人没资格贷款买房!
- 计算机操作系统-3-存储管理
热门文章
- 调用函数----如何在主函数调用子函数
- php+msyql在线教师备课系统
- 数据分析-思维分析逻辑day05
- 普洱市企业登记“区块链云签名”试点工作启动, 用户操作仅需5分钟!
- matlab 卡丹 公式,卡丹公式是什么?请写出来,并用例题加以解释,
- 单元格内容分列多行_excel表格数据换行分列-EXCEL怎么分行呢?一个单元格有多行字,怎么向分列......
- SQL如何实现Excel自动分列功能?
- 【建议背诵】2022下半年软考「集成」100题(1)
- 华为云服务器更换操作系统,云服务器更换操作系统
- (一)、跨服务器自动备份