查找算法
qq_37237304
这个作者很懒,什么都没留下…
展开
-
回溯算法 Java
主要思想: 按深度优先策略搜索问题,通过枚举的方式进行搜索,当发现搜索到的结果不满足问题的解时,就返回寻找别的路径。按照优选条件进行搜索,要实现回溯,首先要确定一个解空间。解空间是指形如数组的一个向量[a1,a2,a3,a4,a5…,an],这个元素。这个向量的每个元素都是问题的部分解,只有当这个数组的每一个元素都填满的时候,才表明这个问题得到了解答。 搜索则是for循环,通过n次循环得到结果。 代码演示: 回溯问题主要分为三种: 一,返回值是true或false boolean solve(Node N)原创 2021-09-27 15:35:16 · 282 阅读 · 0 评论 -
2021-08-30Java查找算法DFS
基本思想: DFS(深度优先搜索)是先序遍历的延续,其主要的思想是从顶点开始,递归遍历所有与顶点临接的点,当某个点被访问过就可以被标记为已被访问,DFS就是尽可能的当前遍历路径能够到达的最长路径,一旦到达终点,在进行回溯,从原来已经遍历过的顶点开始新的遍历。深度遍历需要使用栈(Stack),栈的特点是先进后出。首先将右结点压入栈,再将左结点压入栈。 代码实现: 二叉树访问 定义树节点 public class TreeNode { int val = 0; TreeNode left = n原创 2021-09-02 13:49:35 · 77 阅读 · 0 评论 -
java查找二分法查找(一)
基本思想:首先数组应是有序的,然后通过,每次都以序列中间的位置与目标数进行比较,每次比较之后就缩小一半的查找范围,如果中间位置的关键字与目标数一致,则查找成功。 时间复杂度: 空间复杂度:O(log^2n) 空间复杂度: 非递归O(1) 递归O(log^2n) 代码实现: public class Binarys { /** * 使用递归进行二分法查找 * @param num 数组 * @param key 目标值 * @param left 数组左边界原创 2021-08-25 17:29:28 · 69 阅读 · 0 评论