大O和数据的规模

1、O(f(n))

学术界:O表示算法执行的上界,例如,归并算法的时间复杂度可以是O(nlogn),同时也是O(n^2)的

业界认为:O表示算法执行的最低上界,归并算法的时间复杂度是O(nlogn)

2、一个时间复杂度问题

一个字符串数组,将一每个字符串进行字母序排序,然后将字符串数组进行字典序排序的时间复杂度

n:数组长度  s:最大的字符串长度

O = s*nlogn (字符串数组排序)+ n* slogs(每个字符串)

3、数据规模 : 1S内可以处理的数据规模

O(N^2) :10^3~10^4

O(NLOGN) :10^6~10^7

O(n):10^7~10^8

4、空间复杂度:额外开通的数组规模

递归调用是牺牲空间的,系统需要将结果压入栈中,递归深度是多少就占多少空间

5、常见的模板时间复杂度

两个数交换:O(1)

1+2+....+N问题,是一重for循环: O(n)

字符串反转,第一个元素和最后一个元素, for(i = 0; i < n/2; i++):O(n)

选择排序,双重循环,i递增,j从i+1增:O(n^2)

双重循环:j变化是从1到一个常数:O(n)

二分查找,每次对半的查找,n/2的变化 经过多少次变为1:O(nlogn)

整数变为字符串:while里每次s+n%10,n = n/10: O(logn)

两重循环:n* logn

判断素数:

*************  有循环看循环的起始点,终止点和每次变化

6、验证算法时间复杂度:一层数据规模变化for,数据变化2倍,看运行时间变化

O(n):数据变化2倍,运行时间变化2倍

O(logn):随着数据规模的增加,运行时间基本不变

O(n^2):数据变化2倍,运行时间变化4倍

O(nlong):数据变化2倍,运行时间变化1倍多

logn算法是最优的,数据规模越大,时间几乎没差别

7、递归算法时间复杂度:递归算法时间复杂度不一定是o(nlogn)

典型排序算法是递归算法:快速排序和归并排序 以及 二分查找的递归实现

7.1递归中只进行一次递归调用

1)递归中只进行一次的递归调用:

o(Logn):递归深度depth*每个递归函数中时间复杂度T = o(depth*T)

2) 1到n的和

3)优化了的求x^n次幂,(只能求n大于0的,计算机在处理基数时会进行舍位操作,所以判断是不是基数)

7.2 递归中多次调用递归,画出递归树

1)

递归深度:2^0 + 2 ^1 + 2 ^2……+2 ^n = 2^(n+1) - 1 = O(2^n) 指数级的

指数的优化:通过剪支、动归为  多项式

搜索树

2)merge排序的时间复杂度O(nlogn)

深度:logn

每个节点处理的数据规模是缩小的,每层n个节点,每个节点O(1)

7.3 主定理可查看更复杂的递归时间复杂度

以实现一个动态数组为例子:构造函数

7.4均分复杂度:

7.5防止复杂度震荡:删除数组的时候处理,当容量为当前的四分之一时,数组减小为size的二分之一。防止再次添加元素出现复杂度震荡。

时间: 2024-11-06 14:18:36

大O和数据的规模的相关文章

大v用户数据统计分析

1,统计数据的基本情况,包括微博总数,用户总数,最活跃和最不活跃的用户id #!/bin/sh source_dir=/home/minelab/data/DATA source_file_name=userinfo_00_au_1_out source_file=$source_dir/$source_file_name #source_file=test.src out_dir=/home/minelab/liweibo/daV out_file_name=basic_satic.txt o

JDBC:数据库操作:处理大对象CLOB数据

目标: 了解大对象处理基本原理, 掌握CLOB数据的读,写操作. 可以使用CLOB类处理大文本数据. 大对象处理主要指CLOB和BLOB两种类型字段.可以大量存储文字. 要想在程序中处理这样的大数据操作,则必须使用preparedStatement完成.所有文件内容通过IO流方式从大文本字段中保存和读取. 写入大数据对象: 使用PreparedStatement接口中的方法. void setAsciiStream(int parameterIndex, InputStream x, int l

【数据处理】大库订货数据匹配

select  distinct a.商品编码,a.品名,a.规格,a.最终进价 大库价格,c.curcsprc 进价,a.最终进价-c.curcsprc 差价,d.qty 西部,e.qty 东部,f.qty 中区from lhdh201408 aleft join lhspm b on a.商品编码=b.pluidleft join 商品码 c on b.barcode=c.bcdleft join (select pluno,sum(qty) qty from xbxs where rq b

清理ms sql server 大日志文件数据

1.手动分离数据库: 2.手动删除日志文件: 3.重新生成日志文件: CREATE DATABASE FMIS0 ON (FILENAME = 'E:\FMIS0_DATA\FMIS0-Date') FOR ATTACH_REBUILD_LOG ;GO 清理ms sql server 大日志文件数据

用jdbc访问大段文本数据

1 package it.cast.jdbc; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileNotFoundException; 7 import java.io.FileReader; 8 import java.io.FileWriter; 9 import java.io.IOException; 10 impo

碰到诡异问题,求助大能解答,关于表单提交大文件无限数据提交问题

服务器环境 php环境 出现情况:上传30M文件的时候 本地数据一直在提交,观察服务器io 也一直有下载流量.但是就没有个结束,php输出 $_FILES,也不会执行到这行代码,比如我提交30M文件表单提交,但是流量估计超过好几百M也不会停止,反正不人为停止脚步,就是不断在数据交互.请问有大哥碰到这情况吗?是否哪些php配置没配置对 大文件上传问题已解决 以我测试上传32M文件大小为例 php 运行方式 FPM-FCGI php.ini upload_max_filesize = 64M//上传

hbase首次导入大批次的数据成功!

本次主要是采用hbase自带的importtsv工具来导入.首先要把数据文件上传到hdfs上,然后导入hbase表格.该导入方式只支持.tsv数据文件的导入. 导入流程: 1.下载数据.我们在本文中将使用 “美国国家海洋和大气管理局 气候平均值”的公共数据集合.访问http://www1.ncdc.noaa.gov/pub/data/normals/1981-2010/下载. 我们使用在目录 products | hourly 下的小时温度数据(可以在上述链接页面中找到).下载hly-temp-

大快搜索数据爬虫技术实例安装教学篇

大快搜索数据爬虫技术实例安装教学篇 爬虫安装前准备工作:大快大数据平台安装完成.zookeeper.redis.elasticsearch.mysql等组件安装启动成功. 1.修改爬虫安装配置文件(最好在线下修改好后再上传平台) 2.修改crawler\dkcrw\jdbc.properties配置文件(只修改图片里的内容其他内容默认即可) Hbase.zookeeper.quorum所填地址应在DKM监控平台查看: Redis相关配置看如下界面: 3.把已修改的crawler\dkcrw\下的

echarts大屏展示数据

1.准备工具 1)echarts 去官网下载镜像 https://www.echartsjs.com/zh/download.html 在终端进行 pip 安装 pip install pyecharts-1.7.1-py3-none-any.whl 安装完成之后,我们测试一下, from pyecharts import Bar 报错了,但是并不是因为我们的安装有问题,而是版本不同的问题造成的 from pyecharts.charts import Bar 这样倒入包就没有问题了 用小段代码