
算法
文章平均质量分 66
算法(algorithm)相关内容,记录自己觉得重要的知识点。算法代码使用Java和C语言描述。
相关示例源码:https://gitee.com/moon_2012/algorithms
elegent Developer
每周一篇博文^_^
展开
-
6. 基础: 栈
什么是栈栈可以理解为一个放盘子的架子,盘子一个叠一个放进去,要取的时候只能从最顶上的开始取。后进先出就是典型的栈结构。栈有什么用作为一个基础的数据结构,一个典型的应用就是函数调用栈。OS给每个线程分配了一块独立的内存空间,这块内存空间被组织成了栈这种结构,用来存储函数调用时的临时变量。每进一个函数,就会将临时变量作为一个栈帧入栈,当函数被调用完成时将这个函数对应的栈帧出栈。另一个应用场景是表达式求值。如32 + 10 * 200 + 12。 编译器无法像人一样自然而然先算乘法再算加法,计算机中通过两原创 2021-05-22 17:02:35 · 182 阅读 · 0 评论 -
5. 基础: 链表
相比数组(Array),链表(Linked list)是一种稍微复杂一些的数据结构,它有若干个变种如:单向链表,双向链表,循环链表。跟数组一样它也属于线性表,符合线性表的特征:即除了首尾,每个元素只有一个前驱和一个后继。数组要求一段连续的内存空间,对内存的要求比较高,比如当前内存剩余空间有100M,但非连续的,此时我们申请一个空间占用100M的数组就会失败。而链表恰恰相反,它不需要空间连续,通过指针将一组零散的内存块串起来,所以申请一个空间大小为100M的链表可以成功。为了将链表每个结点串联起来,每个原创 2021-05-18 13:53:19 · 175 阅读 · 0 评论 -
4. 基础:数组
什么是数组(Array)是一种线性数据结构,它使用一组连续的存储空间,来存储一组具有相同数据类型的数据, 且初始化后大小固定。出现了线性的概念,在第一节介绍过数据结构的逻辑分类,大类上可分为线性结构和非线性结构。线性结构即指线性表。什么是线性表(Linear List)?即每一个元素除了第一个和最后一个,都只有一个前驱和一个后继。常见的线性表数据结构:数组,链表,队列,栈。数组除了是线性数据结构,还有一个特征:存储空间连续,且数据类型相同。这个特性非常重要,这样可以实现数组的随机访问(即通过下标原创 2021-05-15 21:20:27 · 149 阅读 · 0 评论 -
3. 入门:时间复杂度&空间复杂度-进阶
本节在初步了解时间复杂度和空间复杂度的基础上,进一步讲一讲四个时间复杂度的分类,分别是:最好时间复杂度(best case time complexity)最坏时间复杂度(worst case time complexity)平均情况时间复杂度(average case time complexity)均摊时间复杂度(amortized time complexity)请看一个示例:/** * 在数组中查找跟目标值target相同值的索引位(第一个匹配的即可),如果没有匹配返回-1 */原创 2021-05-15 15:20:49 · 112 阅读 · 0 评论 -
2. 入门:时间复杂度&空间复杂度-初级
11原创 2021-05-15 14:50:06 · 188 阅读 · 0 评论 -
1. 绪论:如何学好数据结构和算法
什么是数据结构(Data Structure) 是相互之间存在一种或多种特定关系的数据元素的集合。是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间关系等相关问题的学科。 在计算机中,数据元素并不是孤立,杂乱无章的,而是具有内在联系的数据集合。数据之间的一种或多种特定的关系就是数据的组织形式。 为了编好一个程序,必须分析待处理对象的特性和各处理对象之间存在原创 2021-05-13 14:21:38 · 261 阅读 · 0 评论