一、数据结构
基础的数据结构我们只从其定义了解的话,比较抽象,难以形成有效的记忆,人类对于图像的记忆远比文字要高效,所以数据结构可视化是我们学习数据结构的利器,下面是几个数据结构可视化的网站,方便大家快速理解记忆各种数据结构
1.VisuAlgo(数据结构和算法动态可视化网站)
数据结构和算法动态可视化网站是由一个个数据结构的卡片组成的,详情见下图
点击卡片可以详细了解该数据结构的运作原理,例如我们点击二叉树,并进行数值37的查找
2.Algorithm Visualizer
该网站也是数据结构算法可视化网站,不过可以查看相关的代码,例如java和javaScript
主要使用方法如下图所示
二、算法
刷算法题必去LeetCode,赶快注册完刷起来,最好按照一个个分类来刷,掌握每一类的套路比较快 ,从简单-中等-困难一路刷过去,牛逼之路从此起航
链接:https://leetcode.com/
大概使用方式如下图,具体可以自己探索
三、复杂度
复杂度_百度百科复杂度(Complexity, CPX),指的是在给定样本中不同DNA 序列的总长度,是一件事物的复杂性可以用描写这事物所需的计算机语言的长度来衡量。https://baike.baidu.com/item/%E5%A4%8D%E6%9D%82%E5%BA%A6
复杂度(计算机复杂性理论)
计算复杂性理论(Computational complexity theory)是计算理论的一部分,研究计算问题时所需的资源,比如时间和空间,以及如何尽可能的节省这些资源。
计算复杂性理论所研究的资源中最常见的是时间复杂度(要通过多少步才能解决问题)和空间复杂度(在解决问题时需要多少内存)。其他资源亦可考虑,例如在并行计算中,需要多少并行处理器才能解决问题。
时间复杂度是指在计算机科学与工程领域完成一个算法所需要的时间,是衡量一个算法优劣的重要参数。时间复杂度越小,说明该算法效率越高,则该算法越有价值。
空间复杂度是指计算机科学领域完成一个算法所需要占用的存储空间,一般是输入参数的函数。它是算法优劣的重要度量指标,一般来说,空间复杂度越小,算法越好。我们假设有一个图灵机来解决某一类语言的某一问题,设有X个字(word)属于这个问题,把X放入这个图灵机的输入端,这个图灵机为解决此问题所需要的工作带格子数总和称为空间。
复杂度理论和可计算性理论不同,可计算性理论的重心在于问题能否解决,不管需要多少资源。而复杂性理论作为计算理论的分支,某种程度上被认为和算法理论是一种“矛”与“盾”的关系,即算法理论专注于设计有效的算法,而复杂性理论专注于理解为什么对于某类问题,不存在有效的算法。
1.复杂度图示
2.数据结构复杂度
3.数组排序算法复杂度图表
4.不同复杂度耗时增长率