1、初识数据结构和算法

简单认识中:ArrayList的查询快点,插入慢。LinkedList查询慢,插入快。但是结论是将数据的大小为基础前提,相对的。
-1^n 计算问题
编程问题:求(-1)^0 + (-1)^1+ (-1)^2…+ (-1)^n
思路一:循环遍历sum
思路二:当n为奇数sum=-1,当n为偶数时候sum=0
编程问题:求1+2+3…+100
思路一:循环遍历sum
思路二:(n+1)* n/2

数据结构

研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系

2、基本概念

算法

算法代码着用系统的方法描述解决问题的策略机制。
同时出来一个问题,选择什么算法解决,就会###涉及时间复杂度和空间复杂度。

度量算法的执行时间

度量是一个程序(算法)执行时间的两种方法
1)事后统计法
2)事前估算法

时间复杂度统计属于事前估算方法

3、时间复杂度和空间复杂度

时间频度T(N)

一个算法中的语句执行次数称为语句频度或者时间频度,记T(n),n我理解为问题的一个规模

时间复杂度O(n)

1) 某一个函数f(n):当n趋于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称发f(n)是T(n)的同数量函数,记作T(n)=O(f(n))。我理解为:时间频度和时间复杂度可以相同理解,就是一个规模。
2) 时间复杂度分:最坏得时间复杂度、平均时间复杂度
我们一般都是做最坏的时间复杂度。

空间复杂度

1)一个算法的空间复杂度定义为该算法所耗费的存储空间,它是问题规模n的函数。
比较明细的架势redis用空间换时间,但是我们一般都在意时间复杂度上。

例子

    // 算法一 时间频度T(n) = n+1int sum =0;int end =100;for (int i = 0; i <= end ; i++) {sum+=i;}// 算法二 时间频度T(n) = 1sum+=(1+end)*end*2;

计算时间复杂度

忽略常量项

结论:2n+20 和 2n ,n变大会无限接近
3n和3n+10 ,n变大会无限接近
同理,忽略低次项和忽略系数也是这样。
结论是:
1)用常数1代替运行时间中的所有加法常量
2)修改后的运行次数函数中,只保留高阶项
3)去除最高阶项的系数 T(n)=n^2
=>O(n^2)
常见的时间复杂度:
常数阶O(1)、对数阶O(logn)、线性阶O(n)、k次方阶O(n^k)、 O(2^n)
常数阶O(1): 按照上面的例子来看,只要不循环,那这个代码的时间复杂度就是O(1)
线性阶O(n):按照上面的例子来看,都多少个n。就要循环n次,那这个时间复杂度就是O(n);

4、复杂度分析

时间复杂度

原则:忽略常数项、忽略低次项、忽略系数
由小到大:O(1)<O(logn<O(n)<O(nk)<O(2n)
添加元素的时间复杂度:
1)拿list 添加值做比较
从最后加addLast(e) 复杂度O(1)
从头加addFrist(e) 复杂度O(n)
指定位置加add(index,e) 复杂度O(n)
总结:list add方法是O(n) 级别
2)删除
总结:list delete 方法是O(n) 级别
3)修改
总结:list update 方法是O(1) 级别
3)查找
总结:list select 有索引 方法是O(1) 级别、没有索引就是O(n)

均摊时间复杂度

总结就是上面的都是用最坏得时间复杂度,正常可以平均一下。

复杂度动荡

List 再扩容时候,如果在边际进行编辑和删除导致的的长度的回收和扩容,就是动荡;
解决方式,是当长度是小于1/4 的时候才回收。

day001:数据结构和算法-时间频度和时间复杂度相关推荐

  1. 数据结构与算法一:时间频度和时间复杂度

    数据结构系列博客涉及内容: 一.初识数据结构和算法: 1.数据结构: 数据结构:是相互之间存在一种或多种关系的数据元素的集合 研究什么:数据的逻辑结构与物理结构以及它们之间的相互关系 数据结构包括:线 ...

  2. 频度 java_JAVA中算法丨时间频度与时间复杂度

    时间频度 时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境都会造成不同的执行时间. 算法的执行时间和语句的执行次数成正比,因此通过计算执行测试来推断执行 ...

  3. 算法-时间频度 时间复杂度 空间复杂度

    Temporal Frequency& Time Complexity& Space Complexity 计算算法执行时间 时间复杂度(Time Complexity) 常数阶O(1 ...

  4. 算法复杂度(时间频度,时间复杂度介绍计算,空间复杂度)

    算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 事后统计的方法(直接运行看花了多长时间) 这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序:二是所得 ...

  5. 时间频度和时间复杂度

    时间频度/语句频度 时间频度也叫语句频度.时间频度表示代码运行的次数,代码运行的次数与时间正正比 小明去小红家,我们都知道两点直接线段最短.假设小明每走一步相当于,运行一次代码.则如果小明绕路走的话, ...

  6. 8.时间频度和时间复杂度

    度量一个程序算法执行时间的两种方法 事后统计法: 直白就是把程序跑一边,统计程序从开始到结束花费的时间.缺点在于需要将程序跑一边,如果越到耗时程序的时候效率不高,而且要求计算机的硬件软件的环境一致,保 ...

  7. 数据结构与算法之美--1.时间复杂度分析

    时间复杂度分析 为什么要进行时间复杂度的分析 大O复杂度表示法 如何分析一段代码的时间复杂度? 几种常见时间复杂度实例分析. 空间复杂度 最好.最坏时间复杂度 平均时间复杂度 均摊时间复杂度 为什么要 ...

  8. 时间频度,时间复杂度的计算

    文章目录 一.时间频度 1. 概念 2. 特点 2.1 忽略常数项 2.2 忽略低次项 2.3 忽略系数 二.时间复杂度 1. 概念 2. 计算时间复杂度 3. 常见的时间复杂度 3.1 常数阶 O( ...

  9. python【数据结构与算法】一种时间复杂度和空间复杂度的计算方法

    文章目录 1 算法的时间复杂度定义 2 推导大O阶方法 2.1 常数阶 2.2 线性阶 2.3 对数阶 2.4 平方阶 2.5 立方阶 3 常见的时间复杂度排序 4 算法空间复杂度 5 常用算法的时间 ...

最新文章

  1. dbf文件mysql,dbf文件怎么打开?dbf是什么文件?
  2. 什么是接口?如何定义接口?如何实现接口?
  3. 汇编语言——寻址方式的综合应用及转移指令的原理
  4. 大气海洋数值模式经验总结
  5. hscan扫描mysql代码_redis 迭代命令SCAN、SSCAN、HSCAN、ZSCAN
  6. C++入门项目——通讯管理系统
  7. Python获取微信好友地址以及性别并生成可视化图表
  8. 档案管理制度计算机管理制度,计算机管理档案制度
  9. 2017第九届中国(上海)国际先进复合材料及应用展览会(AM China中国新材料展)会刊(参展商名录)
  10. 学生用计算机的使用技巧,选学生笔记本电脑的小窍门
  11. 上传图片校验图片类型、大小及尺寸
  12. Python爬虫实战:抓取淘宝MM照片
  13. google正在等待cnd.bootcss.com的响应
  14. 2016 TCO Algorithm 1B SettingShield
  15. Idea SpringBoot工程提示 Error running 'xxxx': Command line is too long. In order to reduce its leng...
  16. 从一位老工程师的心里话开始谈起IT行业职
  17. docker国内镜像拉取和镜像加速registry-mirrors配置修改
  18. 利用ADS中的Batch Simulation进行DDR仿真
  19. 华为mate30epro支不支持鸿蒙,听我一句劝,华为手机可以支持,但这4款不要买
  20. IXWebHosting优惠码/优惠链接

热门文章

  1. 流程图各个形状代表的含义
  2. Android adb命令使用记录
  3. 学好单片机好找工作吗?单片机学到什么程度可以找工作?
  4. MySQL及Navicat的安装和使用
  5. MATLAB中内置的BP神经网络函数 help newff翻译【学习笔记】
  6. 2023NPDP产品经理认证如何考取?
  7. 物联网医疗来了:让患者获得一站式医疗服务
  8. kube-scheduler源码分析(五)之 PrioritizeNodes
  9. linux操作系统下c语言编程入门
  10. Python中的range函数和arange函数的区别与联系