博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法(1):大O表示法
阅读量:4179 次
发布时间:2019-05-26

本文共 1420 字,大约阅读时间需要 4 分钟。

大O表示法

1. 算法分析简介

① 算法:为逐步解决问题而设计的一系列通用指令,即解决问题的方法;

② 程序:表示算法的编程语言集,程序由算法和数据结构组成;
③ 算法分析:基于所使用的计算资源对算法进行分析比较,计算资源通常包括执行速度和占用内存空间大小,对应"时间复杂度"和"空间复杂度"。

精确表示算法的效率是困难的,只能近似地进行描述。分析算法的优劣,可以从时间复杂度和空间复杂度入手,由于不同计算机的算力不同,直接将计算机运行时间和内存占用情况作为指标进行对比是不具备比较的意义。为摆脱硬件设施的影响,通常用大O表示法对算法性能进行描述。

2. 大O表示法

2.1 简介

数量级(order of magnitude)常被称作大O表示法,记为O(f(x))。大O符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》(Analytische Zahlentheorie)首先引入的。大O表示法是用函数来描述一个函数运算量数量级的渐近上界,即用函数表征运行时间如何随数据量增长而变化。

2.2 如何用大O法表示算法计算时间复杂度

2.2.1 算法执行步数与大O法

将每一步计算定义为基本计算单元,算法执行时间就与算法执行步数成正比。

例1:求和

sum = 0for i in range(n):   sum += i

该算法中,赋值语句执行次数是1,求和次数为n,那么计算步数 T ( n ) = 1 + n T(n)=1+n T(n)=1+n,此时, O ( T ( n ) ) = n O(T(n))=n O(T(n))=n

O只表示出运算的数量级

例2:求和

sum1 = 0sum2 = 0sum3 = 0for i in range(n):   for j in range(n):   sum1 += i   sum2 += j   sum3 = sum3 + i + j

该算法中,三个赋值语句执行次数是3,sum1-sum3的求和次数为3 n 2 n^2 n2,那么计算步数 T ( n ) T(n) T(n)=3+3 n 2 n^2 n2,此时, O ( T ( n ) ) O(T(n)) O(T(n))= n 2 n^2 n2(起决定性作用的是 n 2 n^2 n2,因此3可以忽略)。

以上两个例子,简单描述了大O表示法与运算步骤数的关系,大O只体现算法运算的数量级,常见算法数量级如下:

在这里插入图片描述在这里插入图片描述

常见大O函数
注:图片来源于《Python数据结构与算法分析》

2.2.2 最好情况VS最坏情况VS平均情况

算法的性能不仅仅依赖问题的规模,还受到数据集的影响。

例3:找到列表中目标值的索引

list1 = [0,1,2,3,4,5,6,7,8,9]num = 0for i in range(len(list1)):   if list1[i] == num:       print(i)       break

当num的值刚好为0,一次查找就能够找到,这就是最好情况;而当num的值为9时,需要10次才能找到,这是最差情况;而平均情况介于最好情况和最坏情况之间,这里如果num是等概率随机分布的,那么平均需要5.5次才能找到。

常见数据结构操作效率

在这里插入图片描述

注:表格来源【https://www.cnblogs.com/liuboren/p/11883194.html】

你可能感兴趣的文章
tcp_timestamps tcp_tw_recycle引起的服务器连接不上问题
查看>>
windows下ES和head插件的安装
查看>>
RAP一种更高效的前后端接口对接解决方案
查看>>
ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
查看>>
ELK搭建教程(全过程)
查看>>
maven私服搭建使用
查看>>
Netty学习路线总结
查看>>
基于mybatis拦截器实现数据权限
查看>>
分布式文件系统FastDFS详解
查看>>
centos7上rabbitmq搭建
查看>>
rabbitmq集成spring的xml配置和java代码
查看>>
RabbitMQ消息确认(发送确认,接收确认)
查看>>
一篇笔记整理JVM工作原理
查看>>
activemq、rabbitmq、kafka原理和比较
查看>>
秒杀系统设计思路和实现方法
查看>>
Redis常见面试题
查看>>
JDK重要包和Java学习方法论
查看>>
网络通讯中的三次握手与四次挥手原理详解
查看>>
小米为什么做不出高端手机?
查看>>
送30本技术书籍
查看>>