![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 64
今年元夜时
这个作者很懒,什么都没留下…
展开
-
day48 - 49
Day48 —— 49Day48 —— Heap SortDescription堆排序是一个比较难的内容,涉及到了之前的二叉树。首先我们要知道什么是堆(heap),堆分为大根堆和小根堆。大根堆是父节点比它的子节点都要大,小根堆是父节点比它的子节点都要小。它的基本思想就是先把数组弄成一个大根堆,然后把堆顶和数组最后一个元素交换,这样就把最大值放到了数组的后边。再把数组长度length - 1,再进行构造堆,把剩余第二大值放到堆顶,再重复之前的操作。以此类推,直到数组排序完成。Code/**原创 2022-04-17 16:14:51 · 696 阅读 · 3 评论 -
day47
Day 47 —— Selection Sort1. Description今天学的内容是选择排序,是一个简单直观的算法。其内容核心是在未排序列中找到最小的元素,然后将其和当前循环的起始元素交换位置。然后重复这个操作,这样每次操作下来当前循环内最小的元素都会被换到序列的开头。当所有的循环结束,所有的元素都有序了。2. Codepublic void SelectionSort() { DataNode tempNode; int tempIndexForSmallest; for (原创 2022-04-16 21:34:55 · 457 阅读 · 2 评论 -
day46
Day 46 —— Quick Sort1. Background今天是学习java的第46天,今天的内容是快速排序。2. Description快速排序的思想非常的简单,先找一个锚点,老师的代码是把每个序列的最后一个元素当作这个锚点,然后分别从头和尾*(这里的尾是锚点的前一个元素)*开始遍历。首先是从前开始遍历,此时遍历的元素必须都比锚点小。如果比锚点大,那就开始从尾遍历,从未开始的元素必须比锚点大,如果比锚点小那就和那个从前开始遍历并比锚点大的元素交换位置。上面差不多就是快速排序的基本思想了。原创 2022-04-14 22:07:07 · 517 阅读 · 2 评论 -
day42
Day42-45今天是学习java的第42天了,因为后续的代码都很简单,再加上今天恰好有时间,所以直接一口气完成了四天的代码。https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html上面这个网站是旧金山大学的学习网站,下面所有排序的可视化的动画效果在上面都可以观看的到。当某种排序想不通的时候,不如去看看这种排序的动画,说不定会豁然开朗。其中可调动画的速度,也可手动step to step,非常好用。Day 42 —— Has原创 2022-04-13 17:06:02 · 390 阅读 · 2 评论 -
day41
Day 411. Background今天是学习java的第41天,学习内容是顺序查找和折半查找。经过了前几天图的折磨,我现在看到这种简单的代码已经非常享受了。2. Description我觉得今天的代码没有什么可讲的,顺序查找直接无脑遍历就完事,折半查找的逻辑则是初中学的二分法。这两个逻辑简单,然后代码的实现上也很直接,所以我今天代码完成的速度就非常的快。里面需要注意的地方就是老师建立的数据结果是键值对了,这个东西如果是学了python的话就很熟悉,就是python里面的字典嘛。这个概念本身也原创 2022-04-11 22:04:44 · 720 阅读 · 2 评论 -
Day 40
Day 40今天是学习java的第40天了,今天的任务是写之前十天的心得体会。之前十天学习的是图的相关知识,是数据结构的一个重要章节,也是一个非常难的难点。数据结构在我看来难点有二,一个赫夫曼系列,另一个就是图这部分,其余的都还好。图这个章节,理解是一方面,另一个难点是代码的实现。我在写这个章节的时候,常常会感觉到,逻辑理解了,但是代码写不出来。这个关系到代码的基本功。我觉得,我出现这种情况的原因就是代码量太少了,回头还得大量的练习。图这个东西一般有两种实现形式,一个是邻接矩阵,另一个是邻接表。邻原创 2022-04-10 23:15:17 · 378 阅读 · 3 评论 -
day39
Day 391. Background今天是学习java的第39天,内容是之前学习过的关键路径。这个当时卡了我好久才弄懂,就非常的绕。是我觉得非常值得回味的代码之一。上次因故没有整理笔记,正好今天复习一遍。2. Description2.1 AOE网在谈论关键路径这个问题之前,我们先了解一下AOE网这种数据结构。AOE网(Activity On Edge)即边表示活动的网,是一个带权的有向无环图,其中顶点表示事件(Event),每个事件表示在它之前的活动已经完成,在它之后的活动可以开始,弧上原创 2022-04-09 23:10:55 · 289 阅读 · 2 评论 -
day38
Day38 —— Dijkstra and Prim1. Background今天学习的是,Dijkstra算法和prim算法,这两个算法是数据结构里面最经典的算法。Dijkstra算法是求一个图中一个点到其他所有点的最短路径的算法。Prim算法是查找连通网中的最小生成树。2. Description2.1 DijkstraDijkstra 算法是一个基于「贪心」、「广度优先搜索」、「动态规划」求一个图中一个点到其他所有点的最短路径的算法,时间复杂度 O(n2)。每次从 「未求出最短路径的原创 2022-04-08 22:44:22 · 332 阅读 · 1 评论 -
day36
Day 36 —— Adjacency List1. Background学习java已经有36天了,今天学习的是图的邻接表表示,并完成深度优先遍历和广度优先遍历。2. Description今天数据结构方面没有什么可说的,还是图,只是换了一种表现形式。之前是一个矩阵,现在是一个个的链表。对于我来说,我比较喜欢邻接表,因为邻接表写深度优先和广度优先遍历方便。3. Codepackage datastructure.graph;import datastructure.CircleObject原创 2022-04-05 21:20:13 · 659 阅读 · 4 评论 -
day35
Day 351. Background历经两天,我终于把图的着色问题给弄懂了。着色问题的核心是回溯法,这个我在学习C语言的时候学过,不过那个时候我看的C语言教程是把它放到递归后面的,毕竟回溯法确实是需要用到递归嘛。大概是三年前学的,当时回溯法就一直没弄懂,后来为了进度直接放弃了回溯法的学习。没想到现在学java的时候又看到了。2. Description2.1 回溯法回溯法不是什么神奇的新物种,大家应该有过这样的经历:以前在做数学题的时候,遇到一道不懂的题目,就会自然地将题目的条件代入到所有你原创 2022-04-03 22:17:33 · 385 阅读 · 2 评论 -
day34
Day 34 —— Depth First Traversal1. Background今天是学习java的第34天,今天学习的深度优先遍历。2. Description这个逻辑上与二叉树的深度优先遍历类似. 但要难一点。然后代码的写法上和昨天的很类似。今天的代码实现用到了栈,用栈的后进先出特性,实现深度优先遍历。https://www.cs.usfca.edu/~galles/visualization/DFS.html具体的运行逻辑可以看上面的这个网站。3. Codepackage d原创 2022-04-01 21:44:46 · 436 阅读 · 2 评论 -
day33
Day 33 —— Breadth First Traversal1. Background今天是学习java的第33天,今天学习的是广度有限遍历。今天的这个章节,给我的感觉是即难也简单。难的是对前面所学的内容的一个综合考察,简单的是,前面的基础打好之后,理解了深度优先遍历的逻辑之后就很容易就写出来了。后面的深度优先遍历也是,只要历经前面的磨难不逃课,我觉得难度其实一般。2. Description2.1 Web Recommend首先对于这个题目,我必须介绍一个网站,可以说我理解深度优先原创 2022-03-31 22:52:13 · 58 阅读 · 0 评论