| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 【数据结构 | 入门】 入坑篇 (浙江大学数据结构学习笔记) -> 正文阅读 |
|
[数据结构与算法]【数据结构 | 入门】 入坑篇 (浙江大学数据结构学习笔记) |
本文学习笔记 - 视频地址 : 数据结构-浙江大学 文章目录一、什么是数据结构
有一个简单的例子,比如我有一堆书,我需要你将书本放入书架,那么你想要怎么放呢?
类别分细,查找方便,但管理麻烦,同样,类别分粗一点,查找麻烦,管理方便 二、简单循环例子题目很简单: 实现一个函数,传入正整数N,打印从1到N的全部正整数 循环实现很简单,我们重点看递归实现(由于递归更加简洁易懂,所以程序员比较喜欢递归算法) 递归更加简洁,少定义了一个变量,我们动手写代码跑代码测试,从N到100,100000,1000000,1000000…
输入100000后却直接推出程序,这是为什么呢?发生了神马事情呢? 所以综上所述, 解决办法的效率与空间的利用效率有关 三、多项式例子
这是由于运行速度非常快,一个 所以综上所述, 解决办法的效率与算法的巧妙程度有关 四、数据结构回到开头,什么是数据结构
物理结构: (在计算机存储)
矩阵例子:
五、算法英文名称叫做 5.1 描述算法好坏这是由两个指标 , 空间复杂度
原理: 对N来说,必须要直到N=0,函数才能有结果,函数一直被调用,每一次调用就要存贮使用一个空间,所有空间复杂度在这里为 s ( n ) = c ? n s(n)=c*n s(n)=c?n 而前面的循环算法,只有一个临时变量和一个循环,并没有函数调用等,占用空间始终是一个固定的 例子二:
实际上,机器的加减法运算要比乘除快很多,所以我们在数函数做了多少次乘除,加减法忽略不计。 我们数数其中的乘除 5.2 复杂度的渐进表示法实际上,我们并不需要对算法做非常精细的表示,只要知道其趋势,渐近表示法由此而来
可以看到复杂度的变化在数据规模庞大时是差别很大的 复杂度分析小窍门 5.3 最大子列和问题算法一 - 暴力枚举可以看到时间复杂度很大,实际上该算法,在计算时对总和重复计算了 ,在J加了1之后,我们只要加一个元素就好了,不需要多加一个循环。 算法二 - 减少重复此时时间复杂度 为 O(n2)小了一个数量级,作为一个程序员,看到O(n2) 我们总希望化为 O(log n), 算法三 - 分而治之第三个算法: 分而治之, 大概思路为将一个大问题分为多个小问题,最后再将对应结果其合在一起。 我们将数组分几份,那么这几份所求的结果中最大的便是最终结果。 我们从中间切割一半,分为左右各一半,再从左右再次分半,直到分至一个结果,我们看第一层,分别以两个元素以一小块,选取出结果为 那让我们分析一下改算法的复杂度是多少呢?
所以对应复杂度方程如下图底部 我们对对应公式进行递推展开,一直展开到数据规模为1 算法四 - 在线处理
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/25 21:49:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |