计算机常识细节整理(一)时间复杂度和空间复杂度
一. 什么是算法:是指用来操作数据,解决程序问题的一组方法。对于同一个问题,使用不同的算法,结果是一样的,但是过程中所消耗的资源和时间却会有很大的区别。
二. 从哪些角度衡量消耗资源的多少:时间维度,空间维度。
时间维度:指当前算法所消耗的时间——>时间复杂度
空间维度:指当前算法需要占用的内存空间——>空间复杂度
# 使用什么样的算法来实现,需要在时间,空间复杂度之间进行取舍,权衡。
三. 时间复杂度
公式:T(n) = O(f(n)) ——>大O表示法
通过举例说明:
解释:图片中第一行的执行次数,只有一次;
第三行的执行次数,有n次;
第四行的执行次数,有n次;
综合以上,计算出来的总的执行次数为:f(n)=1+n+n=2n+1;
如果当n为无穷大的时候,1可忽略不计,即f(n)=2n,此时f(n)随着n的数值变化而变化,而
时间复杂度T(n)=O(f(n)),即可简化表达为T(n)=O(n)。
四. 常见的时间复杂度量级有:
- 常数阶O(1)
- 对数阶O(logN)
- 线性阶O(n)
- 线性对数阶O(nlogN)
- 平方阶O(n²)
- 立方阶O(n³)
- K次方阶O(n^k)
- 指数阶(2^n)
常数阶O(1):无论执行多少次,没有循环就是常数阶。
线性阶O(n):上面例子。
对数阶O(logN):
int i = 1;
while(i<n)
{i = i * 2;
}
该例子中,i从初始值开始,每次乘以2,不断的接近n,假设x次乘以2之后,i的值大于等于了n,那么是否可以得出,2的n次方等于x,那么x = log2^n,则简化后,时间复杂度为O(logn)。
线性对数阶O(nlogN):举例如下
for(m=1; m<n; m++)
{i = 1;while(i<n){i = i * 2;}
}
复杂度为对数阶的程序,执行n次,时间复杂度即为线性对数阶。
平方阶O(n²):线性阶复杂度的程序,循环执行n次。
立方阶O(n³):线性阶三层嵌套。
五. 常用的空间复杂度:
O(1)——>如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量。
O(n)——>
int[] m = new int[n]
for(i=1; i<=n; ++i)
{j = i;j++;
}
O(n*n)——>以此类推
计算机常识细节整理(一)时间复杂度和空间复杂度相关推荐
- 【计算机基础】 经常使用的排序算法的时间复杂度和空间复杂度
经常使用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 高速排序 O(n2) O(n*log2n) 不稳 ...
- 计算机时间复杂度和空间复杂度
2019独角兽企业重金招聘Python工程师标准>>> 首先了解一下几个概念.一个是时间复杂度,一个是渐近时间复杂度.前者是某个算法的时间耗费,它是该算法所求解问题规模n的函数,而后 ...
- 公共基础计算机常识题,公共基础知识计算机常识类试题汇总整理(含答案)
主要是事业单位考试的试题筛选而来.事业单位公共基础知识 计算机常识 1.操作系统在第几代计算机开始应用(). A.第一代 B.第二代 C.第三代 D.第四代 2.一般按照(),将计算机的发展划分为四代 ...
- a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度
关注.星标公众号,学点计算机知识. 整理:persistenceBin 今天来跟大家继续分享一下数据结构的基础知识--算法效率的度量:时间复杂度和空间复杂度.首先来跟大家分享一下在电影<复仇者联 ...
- 算法复杂度:算法时间复杂度和空间复杂度表示法
文章地址:http://lzw.me/a/algorithm-complexity.html 算法复杂度分为时间复杂度和空间复杂度. 时间复杂度用于度量算法执行的时间长短:而空间复杂度则是用于度量算法 ...
- 常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出 ...
- 【算法的时间复杂度和空间复杂度】-算法02
算法的时间复杂度和空间复杂度 一个算法的好坏我们主要从"时间"和"空间" 两个维度来衡量 时间维度:是指执行当前算法所消耗的时间,我们通常用 "时间复 ...
- 递归二分查找时间复杂度、空间复杂度和稳定性
递归 递归条件 自己调用自己 有结束条件 二分查找 二分查找对1~100乱序数字查找 l = list(range(1,101)) def bin_search(data_set,val):low = ...
- 时间复杂度和空间复杂度的故事
前言一 很多搞 iOS 开发的同学都没有学过算法,有一些甚至没有学过数据结构.在很多人的观念中,算法和数据结构只是在面试的时候有用. 这些人的想法对吗?在我看来,也对,也不对. 对于 iOS 开发来说 ...
最新文章
- python3下关于copy和deepcopy中的区别
- maven创建的工程eclipse 项目--属性--为什么没有deployment assembly 按钮呢
- 汉诺塔 X HDU - 2511
- linux mint python3.6,Linux 上如何安装并切换最新版本的 Python 3.6
- 【转载】生机勃勃的秋菊freeeim
- Echarts 地图绘制
- linq判断集合中相同元素个数_使用Linq获取集合的最后N个元素?
- 如何用计算机放出音乐,如何录制电脑内部播放的声音及音乐 - 楼月语音聊天录音软件...
- Java Web图书管理系统总结(jsp+servlet+jdbc+javabean+dao)
- 弱监督学习的介绍及应用
- ASP.NET会话(Session) 转载自:寒羽枫(cityhunter172)
- 音乐计算机研修心得,音乐学习心得体会五篇
- 嵌入式系统 - 任务管理
- 想让Button带个图片?安排!LVGL『Image button图片按键控件』介绍
- Python-Pyecharts画图(饼图,雷达图,词云)[二]
- 如何写好一篇优质的网站内容
- Altium Designer 制造输出 各文件后缀的含义
- 无敌哥-创新设计思维
- [附源码]Python计算机毕业设计SSM基于社区疫情防控管理系统(程序+LW)
- C#使用itextsharp生成PDF文件