算法
算法
菜鸡的程序猿
这个作者很懒,什么都没留下…
展开
-
Java 算法分析 骑士周游问题(回溯算法)
public class KnightTravel { private static int X;//棋盘的行 private static int Y;//棋盘的列 //记录所有的棋盘位置是否走过 private static boolean[] isKnightTravel; //记录是否全部走完 private static boolean finish; public static void main(String[] args) { ..原创 2020-08-09 19:26:26 · 679 阅读 · 0 评论 -
Java 算法分析 贪心算法
将广播台K2的广州修改成上海更能说明问题public class Greedy { public static void main(String[] args) { //存放所有的广播台和覆盖地区 HashMap<String, HashSet<String>> allSet=new HashMap<>(); //存放一个电台的覆盖地区 HashSet<String> area1=...原创 2020-08-09 14:16:54 · 171 阅读 · 0 评论 -
Java 算法分析 分治算法解决汉诺塔
汉诺塔:1.如果有一个盘子,A->C2.如果有n>=2的情况,我们总是可以看成两个盘子,最下面的一个盘子,上面的为一个盘子。所以1先把上面的盘子A->B2最下面的盘子A->C3.上面的盘子B->Cpackage divideandconquer;/** * 2020/8/8 * 20:38 */public class DivideAndConquer { static int count=0; public static void..原创 2020-08-08 20:57:25 · 142 阅读 · 0 评论 -
Java 算法分析 堆排序
package duipaixu;import java.util.Random;/** * 2020/8/8 * 16:27 */public class HeapSort { public static void main(String[] args) { //int[] arrays={4,6,8,5,9}; int[] arrays=new int[99999]; for(int i=0;i<99999;i++){ .原创 2020-08-08 20:06:53 · 130 阅读 · 1 评论 -
Java 算法分析 动态规划
动态规划:将大问题划分为小问题进行求解,从而一步步获取最优解的算法。先求子问题,然后从这些子问题的解得到原问题的解。具体的用途:分解的子问题往往不是独立的,下一个子阶段的求解是建立在上一个子阶段的解的基础上进行进一步的求解。就相当于填表的方式逐步推进,得到最优解。package dynamicGuiHua;import java.util.Arrays;/** * 2020/8/8 * 18:36 */public class DynamicProgramming { p原创 2020-08-08 20:01:37 · 161 阅读 · 0 评论 -
Java 面试题 CAS无锁算法 软件层面实现
CAS无锁算法(CompareAndSwap)实现方式是基于硬件平台的汇编指令,是靠硬件来实现。所以为了在软件层面实现该算法,就要用到synchronized关键字,实现原子操作。CAS无锁算法:修改的方法包括四个核心的参数,V:要更改的变量E:预期值N:新值Version:版本号修改一次,version+1,只有当VE&&VersionEversion,V=N;否则表示已被更新过,则取消当前操作。CompareAndSwap类private int V=0;//要更原创 2020-08-06 13:50:28 · 182 阅读 · 0 评论 -
Java面试题 二叉排序树(递归) 遍历
public class BinarySortTree { //根节点 private Node treeNode; private int size; public int getSize() { return size; } //添加元素 public void add(int item){ //根节点是否为空 if(treeNode==null){ treeNode=ne原创 2020-08-03 21:18:58 · 183 阅读 · 0 评论 -
Java 面试题 随机产生给定字符串
给定一个长度,随机产生一个该长度的字符串,由大写,小写字母以及原创 2020-08-01 14:38:49 · 327 阅读 · 0 评论 -
Java 面试题 计算两个时间段距离的天数
计算某年、某月、某日和某年、某月、某日之间的间隔天数,要求年月日通过main方法的参数传递到程序中public static void main(String[] args) throws ParseException { Scanner scanner=new Scanner(System.in); System.out.println("请输入第一个时间(格式1970-01-01)"); String date1=scanner.next(); System.out.p原创 2020-08-01 14:33:21 · 1092 阅读 · 0 评论 -
Java面试题 杨辉三角形
杨辉三角形//杨辉三角形package QFTest;public class Test_17 { public static void main(String[] args) { int[][] arrs=new int[7][7]; yangHui(arrs); for (int i = 0; i <arrs.length ; i++) { //空格 for(int k=0;k<ar原创 2020-07-24 13:40:46 · 194 阅读 · 1 评论 -
Java面试题 二分查找(有序数组)
二分查找(有序数组)必须是有序的数组package QFTest;public class Test_16 { public static void main(String[] args) { int[] arrs={3,4,5,33,222,1111,3333}; int key=33; int result=binarySearch(arrs,key); System.out.println(result); }原创 2020-07-24 09:57:28 · 184 阅读 · 0 评论 -
Java面试题 选择排序
选择排序//选择排序package QFTest;public class Test_06 { public static void main(String[] args) { int[] arr={3,2,5,4,6,1,33,22,11,33,221,6}; selectSortGood(arr); System.out.println("优化后的选择排序算法"); for (int i : arr) {原创 2020-07-24 08:30:44 · 152 阅读 · 0 评论 -
Java面试题 冒泡排序
Java面试题 冒泡排序从前往后排和从后往前排//冒泡排序package QFTest;public class Test_13 { public static void main(String[] args) { int[] arrs={2,5,1,52,42,55,11,33,234,554}; System.out.println("从前往后排的冒泡排序"); bubbleSort(arrs); for (int arr原创 2020-07-24 08:19:47 · 453 阅读 · 0 评论 -
Java面试题 快速排序
快速排序//快速排序package QFTest;public class Test_08 { public static void main(String[] args) { int[] arrs={5,3,6,2,4,9,7,10,19,194,23,45,35,67,1}; quickSort(arrs,0, arrs.length-1); for (int arr : arrs) { System.out.print(arr+"原创 2020-07-23 20:13:30 · 229 阅读 · 0 评论 -
Java面试题 希尔排序
希尔排序//希尔排序package QFTest;public class Test_09 { public static void main(String[] args) { int[] arrs={43,23,54,67,12,78,45,34,56,32,98,61}; shellSort(arrs); for (int arr : arrs) { System.out.print(arr+" ");原创 2020-07-23 20:01:36 · 152 阅读 · 0 评论 -
java面试题插入排序
插入排序//插入排序package QFTest;public class Test_07 { public static void main(String[] args) { int[] arrs={2,4,1,5,3,8}; insertSortGood(arrs); for (int arr : arrs) { System.out.print(arr+" "); } } publi原创 2020-07-23 19:23:09 · 131 阅读 · 0 评论 -
Java大于6的偶数:哥德巴赫猜想
验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和。要求输入一个整数,输出这个数 能被分解成哪两个质数的和。eg : 1414=3+1114=7+7import java.util.Scanner;// 验证哥德巴赫猜想:// 任何一个大于6的偶数,都能分解成两个质数的和。// 要求输入一个整数,输出这个数 能被分解成哪两个质数的和。//步骤1:找出该整数的所有的素数。//步骤2:判断i和num-i是不是都是质数。//步骤3:输出和。public class HW_02_原创 2020-07-23 08:55:51 · 2651 阅读 · 2 评论 -
Java面试题编程找出四位整数abcd 中满足 (ab+cd)(ab+cd)=abcd的数
编程找出四位整数abcd 中满足 (ab+cd)(ab+cd)=abcd的数//假设ab+cd=x x^2=abcd//因为abcd为四位整数,而平方数的最小四位数为32*32=1024//abcd的最大值为9999,而10000的开方为100public class HW_002_15 { public static void main(String []args){ for(int x=32;x<=99;x++){ int abcd=x*x原创 2020-07-22 20:47:51 · 1180 阅读 · 0 评论