![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法 数据结构
一些算法与数据结构的
目前内容均来自于B站尚硅谷老师 韩顺平 的讲解
https://www.bilibili.com/video/BV1E4411H73v?from=search&seid=8692949263314583622
无梦想,却时常幻想
这些都是我的笔记,表述和正确性都不太确定,大家参考着看看就好,学技术还得找大佬的
展开
-
JAVA算法 二分查找,差值查找,斐波那契查找
二分查找public class BinarySearch { public static void main(String[] args) { int[] arr={10,38,65,97,76,13,27,49,78,34,12,64,1}; Arrays.sort(arr); binarySearch(arr,1); } public static void binarySearch(int[] arr,int key){原创 2020-08-17 23:01:41 · 98 阅读 · 0 评论 -
二叉树排序 (递归遍历) 遍历
package week3.day10;/** * 2020/8/3 * 15:08 * zmx */public class TestBinarySortTree { public static void main(String[] args) { BinarySortTree tree=new BinarySortTree(); //添加元素 tree.add(10); tree.add(5); tree原创 2020-08-03 21:28:23 · 307 阅读 · 0 评论 -
java排序 冒泡排序,选择排序,插入排序,希尔排序,快速排序
冒泡排序相邻元素比较,大的向右冒泡public class Bubble {//相邻元素比较,大的向右冒泡 public static void main(String[] args) { int[] nums={10,38,65,97,76,13}; for (int i = 0; i < nums.length; i++) { for (int j=0;j<nums.length-i-1;j++){原创 2020-07-25 16:07:26 · 139 阅读 · 0 评论 -
JAVA 数据结构 链表 约瑟夫问题
单链表头结点不可动,需要借助辅助变量来操作单向链表// 单链表public class SingleLinkedList { HeroNode head = new HeroNode(0,""); // temp 头结点不能动,temp为辅助变量 // 按添加顺序添加 public void addNode(HeroNode heroNode){ HeroNode temp = head; while (true){ .原创 2020-08-16 23:00:23 · 125 阅读 · 0 评论 -
JAVA数据结构 稀疏数组
第0行 记录原有数组共有几行几列多少个有效值原创 2020-08-16 16:39:48 · 103 阅读 · 0 评论 -
JAVA 算法 图 DFS BFS
图的常用概念多 对 多邻接矩阵邻接表DFS用数组实现一个图// 1-A 2-Bpublic class Graph { private ArrayList<String> vertexList;// 顶点集合 private int[][] edges;// 邻接矩阵 private int numOfEdges;// 边的数目 public Graph(int n){ edges = new int[n][n];原创 2020-08-14 18:36:32 · 126 阅读 · 0 评论 -
JAVA算法 贪心算法
1.在堆问题进行求解释,在每一步选择中都采取最好或者最优的选择,从而希望能够导致结果是最好或者最优的算法贪心算法锁的的得到的结果不一定是最优的结果,有的时候会是最优解,但是都是相对接近最优解的结果集合覆盖public class Setover { public static void main(String[] args) { HashMap<String, HashSet<String>> map = new HashMap<>();原创 2020-08-09 21:15:33 · 284 阅读 · 0 评论 -
JAVA算法 分治
分治法在每一层递归上都有三个步骤:1.分解:将原问题分解为若干个规模较小,相互读里,与原问题形式相同的子问题 2.解决:若子问题规模较小而容易被解决则解决,否则递归地解决子问题3.合并:将各个子问题的解合并为原问题的解汉诺塔要处理第n个,需要对前n个作出处理汉诺塔中盘子由小到大进行排列,若要第n个盘子的移到目标柱,需要将前n-1个盘子移至中间柱,将前n-1个盘子移至中间柱,那么目标柱便替换为中间柱,原目标柱变为中间柱,第n个盘子移入目标柱后,前n个盘子此时位于中间柱,所以要将第n-1个盘子移原创 2020-08-09 17:59:35 · 90 阅读 · 0 评论 -
JAVA算法 时间,空间复杂度
时间复杂度1.常数阶 O(1)无循环等复杂结构 ,时间消耗不随某个变量的增长而增长2.对数阶 O(log2 n)3.线性阶 O(n)一层for循环4.线性对数阶 O(n log2 N)一层for循环套对数阶5.平方阶 O(n 2)双层for循环6.立方阶 k方阶多层for循环空间复杂度一维数组O(n)二维数组 O(n 2)...原创 2020-08-09 16:24:42 · 87 阅读 · 0 评论 -
JAVA 算法 回溯
用于求最优解、一组解、求全部解这类问题从问题的某一种可能出发,搜索从这种情况出发所能达到的所有可能,如果有路可以走下去,就走到下一个状态,继续按照这种规则搜索;当这条路走到“尽头”而没有达到目标状态的时候,在倒回上一个出发点,从另一个可能出发,继续搜索,直到达到目标状态。回溯与递归的区别递归是一种算法结构,递归会出现在子程序中自己调用自己或间接地自己调用自己。回溯是一种算法思想, 从问题的某一种可能出发, 搜索从这种情况出发所能达到的所有可能, 当这一条路走到” 尽头 “的时候, 再倒回出发点, 从原创 2020-08-09 15:25:31 · 1137 阅读 · 0 评论 -
JAVA 算法 递归
递归舅子方法自己调用自己递归调用规则:1.当程序执行到一个方法是,就会开辟一个独立的空间(在栈中)2.每个空间的数据(局部变量),是独立的递归要遵守的规则:1.执行一个方法是,就创建一个新的受保护的空间(栈空间)2.方法的局部变量是独立的,不会相互影响3.如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据3.递归必须向退出递归的条件逼近,否则就是死递归了StackOverflowError4.当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果范湖给谁原创 2020-08-09 12:08:58 · 125 阅读 · 0 评论