大数据与算法系列之算法性能分析
我们在敲出自己心爱的程序的时候,我们是否想过,自己程序的性能咋样!
今天,我们说一说对程序或者算法的性能分析!
算法复杂度
算法复杂度是算法性能最基本的评价标准,复杂度是一个算法的时间运行函数,常用大写的‘O’表示,算法复杂度都时间复杂度和空间复杂度组成
1.时间复杂度
时间复杂度描述了算法的运行时间,例如,一个算法对于输入规模n的计算,它平均需要计算6n^3+9n次才能得到问题的解,则他的时间复杂度可视为O(n^3)
常见的时间复杂度大约有6种,他们的含义如下。
1.O(1):表示在常数级别完成问题的解,如在代码程序的位置互换
int i =10; int j = 20;
int temp = i;
i = j;
j = temp;
2.O(lgn):一般采用分治思想的算法
int n=...
if(x>0){
x=x/n
}
3.O(n):可以理解为,将问题进行了常数次迭代
for (int i = 0; i < n; i++){
system.out.println(i)
}
4.O(nlog(n)):在数据遍历的过程中又使用了分治的思想
请参照快速排序的实现
5.O(n^2):对问题进行了两层嵌套遍历
int[] a = {3, 2, 4, 7, ..., n}
for(int i = 0; i < n - 1; i++){
for (int j = i + 1; j < n; j++){
if(a[i] > a[j]){ // do swap, f(n)= n * n
int temp = a[i]; //频度最大
a[i] = a[j];
a[j] = temp;
}
}
}
6.O(n^3):对问题进行了三层嵌套遍历
for i..n
for ...
for ...
do something...
7.O(2^n):指数型
T(n)=2T(n-1) T(1)=1;求T(n)
除了这些之外,还有O(n^n)、O(n!)等等
2.空间复杂度
空间复杂度的描述的是空间
1.O(1):表示在常数级别完成问题的解,如在代码程序的位置互换
int i =10; int j = 20;
int temp = i;
i = j;
j = temp;
空间占用情况为一个变量,所以,空间复杂度是O(1),时间复杂度O(1)
int a =0;
for(i = 0;i<n;i++){
a=i;
}
空间占用情况为一个变量,所以,空间复杂度是O(1),但是时间复杂度是O(n)
2.O(n):表示在常数级别完成问题的解
List<String> list = new ArrayList<String>();
for(i = 0;i<n;i++){
list[i]=i;
}
list中开辟了n个空间,所以空间复杂度是O(n),时间复杂度也是O(n)
.......其他情况以此类推
最后,来两道从网上找的关于复杂度的面试题
【腾讯】下面算法的时间复杂度是____
int foo(int n) {
if (n <= 1) {
return 1;
}
return n * foo(n - 1);
}
【京东】以下函数的时间复杂度为____
void recursive(int n, int m, int o) {
if (n <= 0) {
printf("%d, %d ", m, o);
} else {
recursive(n - 1, m + 1, o);
recursive(n - 1, m, o + 1);
}
}
不对的地方,敬请指正,下方留言。
can u get it out?
大数据与算法系列之算法性能分析相关推荐
- 大数据时代先要满足算法而不是客户的需求
<如何免费获取线上流量>系列课程之一 (注:以下内容是根据张进老师在2020年12月10号在善书院举办的一期企业经营沙龙上,所做的<企业如何获取线上的免费流量>演讲整理出的部分 ...
- 大数据预测的基本原理_大数据需要掌握的基本算法
大数据需要会的基本算法 前言 数学就像一条章鱼,它有触手可以触及到几乎每个学科上面.虽然大部分人在上学的时候有系统的学习,但都没有进行深入的研究和运用,只是拿来拓展自己的思维逻辑.但是如果你想从事数学 ...
- 【大数据入门笔记系列】第一节 大数据常用组件
[大数据入门笔记系列]第一节 大数据常用组件 大数据释义 大数据组件 跳转 大数据释义 近些年来,坊间一直流传着这样的言论:"大数据时代,人人都在裸奔".对于外行人来说,对于&qu ...
- 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)
我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...
- 看这里→大数据工程技术人员系列课程—《大数据工程技术人员-大数据基础技术》正式上线!...
点击蓝字,关注我们 行业背景 据中国商业联合会数据分析专业委员会统计,未来中国基础性数据分析人才缺口将达到1400万.2025年前大数据人才需求仍将保持30%-40%的增速,需求总量将会在2000万人 ...
- 写文章 数据嗨客 | 第2期:线性回归 数据嗨客 | 第2期:线性回归 泊数 泊数 1 年前 普林大数据学院——“机器学习”系列 普林大数据学院依托北京大数据研究院和北京大学,为有需求的企业
数据嗨客 | 第2期:线性回归 泊数 1 年前 普林大数据学院--"机器学习"系列 普林大数据学院依托北京大数据研究院和北京大学,为有需求的企业和用户提供线上线下结合大数据培训服务 ...
- 209-希尔排序算法的思想和性能分析
1.希尔排序算法的思想和性能分析 希尔排序可以认为是插入排序的一个优化,升级. 如果数据序列从大的方向,从全局看,已经是趋于有序的,那么插入排序是所有排序算法中效率最高的. 希尔排序就是从插入排序的这 ...
- 大数据入门基础系列之初步认识大数据生态系统圈(博主推荐)
不多说,直接上干货! 之前在微信公众平台里写过 大数据入门基础系列之初步认识hadoop生态系统圈 http://mp.weixin.qq.com/s/KE09U5AbFnEdwht44FGrOA 大 ...
- 【大数据入门笔记系列】第六节 分布式计算框架MapReduce的工作流程
[大数据入门笔记系列]第六节 分布式计算框架MapReduce的工作流程 前言 MapReduce分布式运算 MapReduceApplication MapTask ReduceTask split ...
- 电商用户行为分析大数据平台相关系列1-环境介绍
最近在自学Spark,看了一些书籍和视频,总是感觉无从下手.拿着一个想法总是无从下手.追其原因,主要是没有系统的学习和使用.对于IT,一切新技术都需要不断实践.不断动手.本着动手的原则,本人通过各种渠 ...
最新文章
- DispatcherServlet的启动和初始化
- TextMate 通用快捷键
- iview tooltip自动消失_惠州广日自动人行道价格大概多少
- Jackson相关的一些注解
- apache.commons.lang.StringUtils 使用心得
- ubantu-16+ndk-r14b 编译 ffmpeg-4.0.2+lame_mp3-3.99.5
- eclipse 快捷键总结
- 当罗密欧遇到朱丽叶... ...当指针遇到数组
- 实用工具类APP,海外大有可为
- 自己手写一个Spring MVC框架
- 系统板I/O端口地址分配(一)
- 苹果mac视频音频格式转换软件:Permute
- 设置windows服务依赖项
- 平时常见的音频文件格式有哪些呢?
- 关于visual studio和vc版本之间的对应关系(更新至2020.07)
- ceres之LM算法
- 阿里p6和p7的主要区别是什么?
- linux系统日志报错kernel,Linux 系统日志 kernel: __ratelimit: xxx callbacks suppressed-Fun言...
- C++ TCP 网络编程与数据通信
- 勒索病毒解密SQL数据库修复文档文件服务器中毒远程处理数据恢