存在morning
乐于了解新技术,善于复盘总结,不是很聪明,但能够持续进步。
展开
-
【数据结构与算法 一】基本概念、结构和学习方法
算法与数据结构一直是我感觉难以迈过去的坎,后悔大学的时候没有好好学习,导致造成了内心的阴影,每次都有逃避的情绪在里面,这次决定通过学习和实践王争的《数据结构与算法之美》来帮助自己迈过去。按照这门课程的学习路线划为四个阶段:入门篇:掌握时间、空间复杂度的概念,大 O 表示法的由来,各种复杂度分析技巧,以及最好、最坏、平均、均摊复杂度分析方法,掌握基础篇:掌握最基础、最常用的数据结构和算法,例如数组、链表、栈、队列、二叉树等。这部分我感觉类似于二八原则,可以用20%的世界快速获得性价比最高的80%的基础内原创 2021-03-21 20:40:44 · 257 阅读 · 0 评论 -
【数据结构与算法 二】时间复杂度与空间复杂度分析
数据结构和算法本身解决的是快和省的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。衡量标准就是算法的时间复杂度和空间复杂度。复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。时间复杂度我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法,算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否,这就是算法的时间复杂度。算法执行时间需通过依据该算法编制的原创 2021-03-21 22:51:37 · 247 阅读 · 0 评论 -
【数据结构与算法 三】常见数据结构与算法组合应用方式
线性数据结构中的元素之间存在一种明确的顺序关系,而非线性数据结构则在元素之间没有这样的顺序要求,允许更为复杂的关联关系。很抱歉,作为一个文本AI模型,我无法直接绘制图表,但我可以为您列出常见的算法和数据结构分类,并为每个分类提供简要说明。您可以根据这些信息自行绘制图表。:通过将问题分解为更小的子问题来解决问题的算法,如递归求阶乘、斐波那契数列等。:用于对数据集中的元素进行排序的算法,如冒泡排序、插入排序、快速排序等。:将问题分解为独立的子问题,分别解决后再合并它们的解决方案,如归并排序。原创 2023-08-30 21:50:58 · 242 阅读 · 0 评论 -
【基本数据结构 一】线性数据结构:数组
最简单最基础的入门数据结构就是数组了。在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。数组的定义数组(Array)是一种线性表数据结构。它用一组固定长度的连续内存空间,来存储一组具有相同类型的数据线性表与非线性表线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之原创 2021-03-22 22:54:42 · 248 阅读 · 0 评论 -
【基本数据结构 二】线性数据结构:链表
上一篇Blog理解了数组的定义、数组的存储、数组的使用和Array类等数组的基本知识,我们理解到数组是一种线性的固定长度连续内存空间的相同数据类型存储结构,而且随机访问的时间复杂度为O(1),插入和删除的平均时间复杂度都是O(n),其实我们经常拿数组和链表进行比较,那么这二者之间到底有什么差别呢?需要学习链表之后才能知道。链表的定义单链表双向链表循环链表链表与数组链表的存储链表的使用链表代码实现技巧链表实现技巧经典链表代码单链表反转链表中环的检测两个有序链表的合并删除链表中倒数第原创 2021-03-24 23:11:14 · 216 阅读 · 0 评论 -
【基本数据结构 三】线性数据结构:栈
学习了数组和链表后,再来看看第三种线性表结构,也就是栈,栈和后边讲的队列一样是一种受限的线性表结构,正是因为其使用有限制,所以对于一些特定的需要操作可控的场合,受限的结构就非常有用。栈的定义栈的内存结构栈的使用栈的实现方式数组实现(顺序栈)链表实现(链式栈)栈的应用栈在函数调用中的应用为什么函数调用要用“栈”来保存临时变量呢?用其他数据结构不行吗?其实,我们不一定非要用栈来保存临时变量,只不过如果这个函数调用符合后进先出的特性,用栈这种数据结构来实现,是最顺理成章的选择。从调用函数进入原创 2023-09-13 22:46:30 · 239 阅读 · 0 评论 -
【基本数据结构 四】线性数据结构:队列
学习了栈后,再来看看第四种线性表结构,也就是队列,队列和栈一样也是一种受限的线性表结构,和栈后进先出的操作方式不同的是,队列是FIFO的结构,也就是先进先出的操作方式。队列的定义队列的内存结构队列的使用队列的实现方式数组实现(顺序队列)链表实现(链式队列)队列的分类和应用循环队列阻塞队列并发队列...原创 2023-09-13 23:16:09 · 306 阅读 · 0 评论 -
【基本数据结构 五】树形数据结构:二叉树
树”这种数据结构真的很像我们现实生活中的“树”,这里面每个元素我们叫做“节点”;用来连接相邻节点之间的关系,我们叫做“父子关系”二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只有左子节点,有的节点只有右子节点二叉查找树是二叉树中最常用的一种类型,也叫二叉搜索树。顾名思义,二叉查找树是为了实现快速查找而生的。不过,它不仅仅支持快速查找一个数据,还支持快速插入、删除一个数据。原创 2023-09-16 00:30:02 · 164 阅读 · 0 评论 -
【基础算法 一】排序算法
在大批量的刷题之前,做好前期的准备工作,首先明白了时间复杂度和空间复杂度的计算方法,这个在我的上一篇博文里有提到,然后对经典排序算法做一个全面了解,2017.7.13,本文大部分内容引自http://www.cnblogs.com/eniac12/p/5329396.html 在自己不理解的地方着重重写了一下,代码实现上重新采用自己熟悉的语言java来实现,在正式开始前,需要掌握以下三个概念:排序转载 2017-07-13 15:44:13 · 875 阅读 · 0 评论 -
【数据结构 五】---堆
在算法的总结过程中,主要是快速排序算法,发现了堆排序,然后之前对堆的概念也不是非常清楚,所以这里做一个总结,帮助自己快速上手来辅助算法的学习。2017.7.15,在总结的过程中用到了以下几个博客的知识,在此感谢:CSDN的http://blog.csdn.net/wypblog/article/details/8076324和博客园的http://www.cnblogs.com/JVxie/p/48原创 2017-07-15 15:51:53 · 577 阅读 · 0 评论 -
【数据结构 六】---树
一直对树的概念比较模糊,什么红黑树啊,二叉搜索树等很多没有一个完整的知识体系结构,所以今天准备花一天的时间做一个总结,力求搞明白树的全部知识,不同树之间的体系结构,以及一些常见应用,在博客书写过程中,主要参照了以下三篇博文http://www.cnblogs.com/maybe2030/p/4732377.html和http://blog.csdn.net/hero_myself/article/d原创 2017-08-05 11:54:50 · 735 阅读 · 0 评论 -
【数据结构 七】---字符串
String类创建字符串String greeting = "beijing";编译器会使用该值创建一个 String 对象。和其它对象一样,可以使用关键字和构造方法来创建 String 对象。注意String类型是特殊的引用类型(前边有final),所以String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了如果需要对字符串做很多修改,那么应该选择使用 String原创 2017-06-23 22:00:51 · 560 阅读 · 0 评论