| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【算法社区】训练准备和复杂度分析 -> 正文阅读 |
|
[数据结构与算法]【算法社区】训练准备和复杂度分析 |
本文导读:本文介绍了学习算法和数据结构的方法和准备工作,介绍了学习算法的一些必要的专业名词,时间复杂度、空间复杂度的代码案例 一、训练准备-怎么学?学到什么程度?1、怎么学?第一遍:读题和思考5-15分钟,如果有思路的话自己开始做和写代码(思考所有的可能解法); 2、学到什么程度?可以构件知识树(知识模型、思维导图),做过的题有多种解法,讲出来举一反三 二、复杂度原理衡量代码的好坏,包括两个非常重要的指标:1.运行时间;2.占用空间。衡量标准有个度就是时间复杂度和空间复杂度 时间复杂度:算法的时间复杂度表示为,若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。记作?T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 空间复杂度:算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作:S(n)=O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。 如何推导出时间复杂度呢,有如下几个原则: 如何影响空间复杂度的三个方面: 三、复杂度算法分析(一)几种时间复杂度的代码示例O(1) 算法 一种算法的运算次数与数据规模无关,那么它的时间复杂度是常数级别的,写成?O(1),哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标。
O(logn) 算法 时间复杂度O(logn)对数阶,当数据增大n倍时,耗时增大logn倍,二分查找就是O(logn)的算法,每次排除一半的可能
O(n) 算法 线性阶,就代表数据量增大几倍,耗时也增大几倍,比如常见的遍历算法
O(nlogn)算法 线性对数,就是n乘以logn(遍历的同时内部可以排除一半数据),当数据增大256,耗时增大256*8=2048倍。这个复杂度高于线性低于平方。归并排序就是O(nlogn)的时间复杂度。
O(n2)算法
对比O(n3) 算法、?O(n2)算法、O(nlogn) 算法、O(n) 算法、O(logn) 算法 (二)几种空间复杂度的代码示例常量空间 类似于时间复杂度 O(1),当算法的存储空间大小固定,和输入规模没有直接的关系时,空间复杂度记作O(1)
线性空间 当算法分配的空间是一个线性的集合(如数组),并且集合大小和输入规模 n 成正比时,空间复杂度记作 O(n)
二维空间 当算法分配的空间是一个二维数组集合,并且集合的长度和宽度都与输入规模 n 成正比时,空间复杂度记作 O(n^2)
递归空间 在操作系统执行程序时,会专门分配一块内存,用来存储“方法调用栈”。此时栈空间复杂度就是 O(n)。
小结:本文介绍了学习算法和数据结构的方法和准备工作,介绍了学习算法的一些必要的专业名词等等 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 8:20:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |