小懒羊爱吃草
小枯林
展开
-
四:动态数据结构基础:1:链表:
链表也是一种线性数据结构;(1)前面我们已经了解了动态数组、栈、队列;然后,我们底层都是数组去实现的;即,其本质上都是静态的数据结构;(2)链表是一种真正的动态数据结构;●链表是最简单的动态数据结构;后面还会接触更多的动态数据结构,比如二分搜索树、平衡二叉树等;掌握好了链表,有助于学习这些更复杂的动态数据结构;●链表涉及到计算机领域一个重要的概念引用(或指针),这个概念和内存相关;虽然在Java中,不需要我们手动管理内存;(1)(2)链表的节点,通常有两部分内容一部分存储真正的数据;(3)...原创 2022-07-22 00:27:59 · 298 阅读 · 0 评论 -
三:数据结构基础:6:队列:补充:不浪费一个空间的循环队列;没有size成员变量的队;双端队列;Java官方提供的Stack的讨论;(本篇博客内容,没细看)
目录一:不浪费一个空间的循环队列;二:没有size成员变量的队;三:双端队列;四:Java程序员,别用Stack!?五:栈和队列,习题;(未写……)原创 2022-07-08 10:10:46 · 209 阅读 · 0 评论 -
三:数据结构基础:5:队列:循环队列;
实现循环队列;原创 2022-07-07 20:36:25 · 353 阅读 · 0 评论 -
三:数据结构基础:4:队列:数组队列(基于动态数组,去实现队列);
基于在【三:数据结构基础:1:数组;】中实现的动态数组,去实现队列; 原创 2022-07-07 17:29:32 · 421 阅读 · 0 评论 -
三:数据结构基础:3:关于LeetCode的几点说明;
三个在使用LeetCode时的问题;原创 2022-07-06 15:39:01 · 150 阅读 · 0 评论 -
三:数据结构基础:2:栈;(基于我们创建的动态数组,去自己实现一个栈)
目录一:栈,简介;二:栈的应用;1.编辑器的Undo操作(撤销);2.程序调用所使用的系统栈;三:栈的基本实现;1.基于我们在【三:数据结构基础:1:数组;】中实现的动态数组,去实现栈;(1)我们自己编写的动态数组Array;(2)定义一个接口,来定义栈;(3)编写一个实现类,去实现栈; 2.该实现方案,时间复杂度分析;四:栈的另一个应用:括号匹配;1.以力扣的第20题为例;2.思路分析;3.编程实现; 这个问题,可以很好的使用栈来解决;...原创 2022-07-06 13:02:40 · 198 阅读 · 0 评论 -
三:数据结构基础:1:数组;(Java提供的数组分析;二次封装数组;复杂度分析;均摊时间复杂度和时间复杂度震荡;)
说明: (1)本篇博客介绍数组,通过基于Java提供的数组,进行二次封装的过程,来加深对数组这种基本的数据结构的理解; (2)本篇博客涉及的代码,还是比价容易理解的;重要的是,对这个封装的思路、数据结构的套路有个整体的感知; 目录 一:为什么要学习数据结构; 1.数据结构是什么; 2.数据结构,三种结构; 3.数据结构,应用案例; 二:Java中的数组; 1.数组,基础; 2.数组,演示; 插:数组补充简介; 1.数组的索引,可以有语义,也可以没语义; 2.Java提供的数组..原创 2022-05-23 01:09:45 · 212 阅读 · 0 评论 -
二:排序基础:2:插入排序;
说明: (1) 比如,我们在玩扑克牌的时候,抓了一手牌之后,我们要把这些牌排序时候,在实际中,我们一般采用的就是插入排序法; 下面的动图很好的展现了插入排序的逻辑;,参考自【【算法】排序算法之插入排序】,该文的作者是【muzi】; ......原创 2022-05-21 02:07:09 · 179 阅读 · 0 评论 -
二:排序基础:1:选择排序;
一:选择排序,分析; 1.选择排序:基本思路:第一步,把最小的数拿出来;第二步,把剩下的,最小的拿出来;第三步,把剩下的,最小的拿出来;……;直到选择到最后一个元素;比如下面的例子: ●但是,我么上面的解决方案,需要新创建一个数组来存放排序的数据,即占用额外的空间,其实是一种空间上的额外的浪费; ●那么,对于选择排序来说,我们是否可以不占用额外空间,做到在原地完成?(PS:有些排序算法,我们可以做到原地排序,比如这儿的选择排序;但是对于有些排序算法......原创 2022-04-26 20:54:06 · 206 阅读 · 0 评论 -
一:线性查找法:9:测试算法的性能;(本篇博客的核心思想就是:测试算法耗时,来反映算法性能;)
说明: (1)本篇博客内容: ●测试前面写的线性查找法所消耗的时间; ●本篇博客介绍的【测量算法运行时间的策略】,以后在测试其他算法的性能时,也可以采用这个策略; (2)本篇博客的代码沿用自【一:线性查找法:5:线性查找法案例代码和完善(完善包括【方法设为静态,构造方法设为私有】,【使用泛型增强方法通用性】,【使用equals代替==】;博客也包括equals()和==的分析)】中的LinearSearch项目; 本篇博客测试算法性能的核心:就是......原创 2021-11-04 00:23:42 · 180 阅读 · 0 评论 -
一:线性查找法:8:复杂度分析;
说明: (1)作为一个软开er,似乎并不需要过分深入了解复杂度分析;目前有个基本了解即可; 一:算法复杂度简介; 为什么需要了解算法复杂度分析?:复杂度分析是个很好的工具,其可以表示算法的性能; 1.分析【算法耗时】时,需要考虑最坏的情况; 以前面的线性查找算法为例: public static <E> int search(E[] data, E target) { for (int i = 0; i < data.length; i....原创 2021-11-02 23:27:21 · 402 阅读 · 0 评论 -
一:线性查找法:7:循环不变量;(本篇博客仅仅是一个引入性的介绍)
声明:【一:线性查找法】部分,是算法与数据结构的入门,会介绍很多基础性的概念,这些概念在后续介绍更复杂算法时,会进一步介绍的。(虽然自己对算法也有一定了解,但在学习当前内容的时候,把自己看成一个小白就行了) 说明: (1)【循环不变量】很重要: ● 在程序设计中,循环是构建逻辑的一种重要方式; ● 实际上,近乎所有的算法都会涉及循环,即我们总是要循环的做一件事,逐渐的求解问题。 ●我们在写算法的时候,理解【循环不变量】似乎能帮助......原创 2021-11-02 01:53:55 · 466 阅读 · 0 评论 -
一:线性查找法:6:使用自定义类测试【上篇博客中编写的线性查找算法】;(其中演示了【自定义类,重写equals()方法】的惯用套路;)
说明: (0)在【算法与数据结构】专栏中,本篇博客可以看成是一篇“插叙”; (1)本篇博客的主要目的是使用自定义类测试【上篇博客中编写的线性查找算法】;但是,其中更重要的一个点是【体味在自定义类中,根据实际的业务需求,重写equals方法】; (2)本篇博客的代码沿用自【一:线性查找法:5:线性查找法案例代码和完善(完善包括【方法设为静态,构造方法设为私有】,【使用泛型增强方法通用性】,【使用equals代替==】;博客也包括equals()和==的分析)】中的LinearSearch项目; …….原创 2021-11-01 17:45:26 · 130 阅读 · 0 评论 -
一:线性查找法:5:线性查找法案例代码和完善(完善包括【方法设为静态,构造方法设为私有】,【使用泛型增强方法通用性】,【使用equals代替==】;博客也包括equals()和==的分析)
说明: (1)本篇博客的主要目的是【通过线性查找法,打开算法的大门】; (2)其中的【程序实现 和 后续的程序改善】,似乎有点跑题,但可以有效的【提升编程能力】; 目录 一:“线性查找法”引入案例; 二:“线性查找法”初始实现; 三:“线性查找法”初始实现:完善一:【查找方法设为static】;【构造方法设为private】; 1.将search方法设为静态; 2.将LinearSearch类的构造函数设置为private; 四:“线性查找法”初始实现:完善二:使用泛型,使方法具有...原创 2021-10-28 22:56:10 · 182 阅读 · 0 评论 -
一:线性查找法:4:什么是算法;(没有“实质”内容,纯粹概念性介绍)
说明: (1)本篇博客的内容,可以当成课外读物,适当理解,能够说服目前的自己就可以了; 目录 一:介绍【线性查找法】的目的; 二:算法的定义; 算法定义; 生活中也有算法; 算法五大特性;(了解即可) 一:介绍【线性查找法】的目的; 说明: (1)线性查找法是一个很简单的算法,甚至是【简单到,甚至认为这就不是一个算法】;不过,通过介绍线性查找法,引出【查找】这个话题;(在算法和数据结构领域,很多问题都可以看成是查找问题) (2)在介绍【线性查找法】的过程中,能够提升一些....原创 2021-10-24 23:18:01 · 157 阅读 · 0 评论 -
一:线性查找法:3:注意事项;
语言:Java实现,版本8; 但,建议使用其他语言(比如C等)也实现一下; JS,Python、PHP脚本语言的一个特殊性: (1)使用脚本语言来学习算法原理,是可以的; (2)但,不适合使用脚本语言来考察算法的性能: ●比如有时,使用JS实现了某个优化了的算法,但发现其执行效率还不如不优化;这种情况,对于脚本语言是很正常的; ●这是因为,脚本语言是在解析器上运行的,所以很多时候,代码的执行效率是依靠解析器的执行方式的,解析器可能会对这些语言内部的函数作底层的优化;......原创 2021-10-24 17:07:08 · 113 阅读 · 0 评论 -
一:线性查找法:2:算法和数据结构有什么用?
说明: (1)本篇博客的目的就是:解决【学算法和数据结构,到底有没有用】这一疑问; 目录 零:算法和数据结构引文; 一:计算机世界中,很多东西底层都蕴含着很多数据结构和算法的东西; 案例1:数据库; 案例2:网页源代码的解析; 案例3:操作系统; 案例4:文件压缩; 案例5:游戏; 案例6:图形学; 案例7:图像学; 二:为什么在实际工作中,感觉用不到算法和数据机构? 三:为什么有些公司(尤其是大厂)面试时,会面算法和数据结构? 零:算法和数据结构引文; (1...原创 2021-10-24 16:46:49 · 190 阅读 · 0 评论 -
一:线性查找法:1:算法和数据结构内容概述;
说明: (1)本篇博客内容:介绍了【算法和数据结构】包括哪些内容;只是一个摘要性质的简介; 目录 一:课程内容概述:本体系课程,会系统、全面的介绍算法和数据结构的内容; 二:课程目的:不仅仅是机械性的掌握,而是要深入理解、感性认识; 三:课程特点:这个课程面向基础、图画展示,希望通过本课程构建自己的一个【算法和数据结构体系】,体验算法优化、测试等过程; 一:课程内容概述:本体系课程,会系统、全面的介绍算法和数据结构的内容; (1)● 包括十大排序算法,也包括这些排序算法的...原创 2021-10-24 14:29:29 · 260 阅读 · 0 评论