
递归
kekeoneone
offeroffer
展开
-
汉诺塔问题
策略:分治算法需求:一个珠子上从小到大拜访了64个圆盘,要求把他重新放在另一根柱子上,要求大圆盘不能在小圆盘上面,每次只能移动一根柱子。解决思路:public static void hanoiTower(int num,char x,char y,char z){ //如果只有一个盘 if(num==1) { Sy...原创 2020-04-02 12:54:44 · 217 阅读 · 0 评论 -
数组顺序存储二叉树
一般先判断 数组是否为空,然后再判断长度是否为0,因为可能报空指针异常。不初始化的时候,默认是null。所以如果在一行代码中要同时判断的时候需要这样写:if(array == null || array.length == 0)注意||是度短路,如果为空,后面就不判断了。...原创 2020-03-24 14:41:46 · 331 阅读 · 0 评论 -
二分查找
1.线性查找:即for循环逐个查找2.二分查找:使用前提:在有序数组中查找 public static int binarySearch(int []arr,int left,int right,int value){ if(left>right){ return -1; } int mid=(left+...原创 2020-03-21 20:47:51 · 132 阅读 · 1 评论 -
归并排序
分治: //分+合并 public void mergeSort(int []arr,int left,int right,int[] temp){ if(left<right){ int mid=(left+right)/2; //中间索引 //向左递归 mergeSort(arr...原创 2020-03-21 16:57:52 · 81 阅读 · 0 评论 -
快速排序
快速排序是对冒泡排序的改进。思想:通过一趟排序把要排序的数分为两部分呢,其中一部分的所有数据比另一部分的所有数据都要小。然后按照此方法,对两部分数据分别进行快速排序,整个过程可以递归进行。 public void quickSort(int[] arr,int left,int right) { int l=left; int r=right; ...原创 2020-03-21 15:08:32 · 117 阅读 · 0 评论 -
八皇后
package com;public class QueueDemo { int max=8; //表示最多有几个皇后 int [] arr=new int[max]; static int count=0; //定义数组arr,保存皇后 public static void main(String[] args) {QueueDemo queu...原创 2020-03-20 21:50:35 · 135 阅读 · 0 评论 -
迷宫回溯——递归
1.什么是递归?自己调用自己,每次传入的方法参数不同。2.需求:终止条件,和递归规律代码:package com;public class Mul { public static void main(String[] args) { //创建一个数组,模拟迷宫 //地图 int[][] map = new int[8][7];...原创 2020-03-20 18:09:55 · 160 阅读 · 0 评论