算法
文章平均质量分 59
...
小李子还挺酸
突飞猛进往往是自然发生的。你在某个夜晚苦熬一个知识点时,不会觉得自己突飞猛进;只有在多年后某日熟练地给别人讲解这个知识点后,内心才会小小地波动一下,猛然忆起当年深夜中的青灯一盏。
展开
-
<算法>求一个数组的所有排列组合
经常会遇到一些笔试题目,通过求出数组的所有排列组合就可以轻易解答出。今天碰巧看到一个很巧妙的求法,故记录一下例如给定一个数组[1,2,3],那么排列组合有如下[1][2][3][1,2][1,3][2,3][1,2,3]那么实际上每个排列组合都可以将其对应一个数字[1] //1 0 0[2] //0 1 0[3] //0 0 1[1,2] //1 1 0[1,3] // 1 0 1[2,3] //0 1 1[1,2,3] //1 1 1 当选取元素时,将其原创 2021-10-12 15:09:14 · 4562 阅读 · 1 评论 -
<算法>回溯算法入门级详解 + 练习
回溯算法与深度优先遍历以下是维基百科中「回溯算法」和「深度优先遍历」的定义。回溯法 采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案;在尝试了所有可能的分步方法后宣告该问题没有答案。深度优先搜索 算法(英语:Depth-Firs转载 2021-06-06 17:26:07 · 426 阅读 · 0 评论 -
<算法>堆排序(java实现)
首先先看什么是大顶堆、小顶堆大顶堆:每个结点的值都大于或等于其左右子结点的值小顶堆:每个结点的值都小于或等于其左右子结点的值如图:那么大顶堆对应的数组就是:[50,45,40,20,25,35,30,10,15]小顶堆对应的数组就是:[10,20,15,25,50,30,40,35,45]我们知道,数组中,下标为i的元素的左子节点(如果存在)为下标2*i+1的元素,右子节点(如果存在)为下标2*i+2的元素(i从0开始)1、思路(1)将无序序列构建成一个大顶堆(小顶堆)(2)将堆顶元原创 2021-05-07 16:55:27 · 124 阅读 · 0 评论