- 博客(72)
- 资源 (1)
- 收藏
- 关注
原创 字符匹配-暴力法
public class ViolenceMatch { public static void main(String[] args) { String str1 = "BBC ABCDAB ABCDABCDABDE"; String str2 = "ABCDABD"; int index = strMatch(str1, str2); ...
2019-12-29 16:17:21
170
原创 分支算法-汉诺塔
public class HanoiTower { public static void main(String[] args) { hanoi(3, 'A', 'B', 'C'); } public static void hanoi(int num, char a, char b, char c) { if(num == 1) { ...
2019-12-28 16:17:06
159
原创 图的深度优先和广度优先遍历
import java.util.ArrayList;import java.util.Arrays;import java.util.LinkedList;public class GraphDemo { private ArrayList<String> vertexList; //存储顶点的集合 private int[][] edges; ...
2019-12-28 14:14:39
144
原创 图-代码实现
import java.util.ArrayList;import java.util.Arrays;public class GraphDemo { private ArrayList<String> vertexList; //存储顶点的集合 private int[][] edges; //邻接矩阵 private int numOfEdge...
2019-12-26 13:44:14
238
原创 平衡二叉树的实现
public class AVLTreeDemo { public static void main(String[] args) {// int[] arr = {4, 3, 6, 5, 7, 8};// int[] arr = {10, 12, 8, 9, 7, 6}; int[] arr = {10, 11, 7, 6, 8, 9};...
2019-12-25 14:16:41
94
原创 二叉树获取树的高度
public class AVLTreeDemo { public static void main(String[] args) { int[] arr = {4, 3, 6, 5, 7, 8}; /* 4 / \ 3 6 ...
2019-12-25 12:14:13
614
原创 双向链表的实现
管理单项链表的缺点分析:1、单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找2、单向链表不能自我删除,需要靠辅助节点,而双向链表,则可以自我删除,所以前面我们单链表删除节点时,总是找到temp,temp是待删除节点的前一个节点分析双向链表的遍历,添加,修改,删除的操作思路:1、遍历方法和单链表一样,只是可以向前,也可以向后2、添加(默认添加到双向链表的最后)(1)先找...
2019-12-24 16:50:18
121
原创 寄几用数组模拟的一个栈
package com.itguigu.myStack;public class StackDemo { public static void main(String[] args) { int[] array = new int[3]; Stack stack = new Stack(array); try { ...
2019-12-24 16:50:14
107
原创 单链表的实现
1、链表是以结点的方式来存储2、每个结点包含data域,next域:指向下一个节点3、链表的各个节点不一定是连续的4、链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定head节点:不存放具体的数据,作用就是表示单链表头水浒英雄排行榜管理:1、完成对英雄的增删改查操作2、第一种方法在添加英雄时,直接添加到链表的尾部3、第二种方法在添加英雄时,根据排名将英雄插入到指定位置...
2019-12-24 16:50:03
109
原创 数组模拟队列
思路分析:1、将尾指针往后移:rear+1,当front == rear 【空】2、若尾指针rear小于队列的最大下标maxSize-1,则将数据存入rear所指的数组元素中,否则无法存入数据。rear==maxSize-1【队列满】package com.itguigu.queue;import java.util.Scanner;public class ArrayQueueDe...
2019-12-24 16:49:48
104
原创 求单链表中节点的个数
public class LinkedListSize { public static void main(String[] args) { SingleLinkedList1 singleLinkedList = new SingleLinkedList1(); Node node1 = new Node(1); Node node2...
2019-12-24 16:49:39
2363
原创 查找单链表中的倒数第K个结点
package com.itguigu.linkedlist.interview;public class LinkedListBackwardsK { public static void main(String[] args) { SingleLinkedList2 singleLinkedList = new SingleLinkedList2(); ...
2019-12-24 16:49:33
270
原创 单链表的反转
package com.itguigu.linkedlist.interview;import java.util.Stack;public class LinkedListReverse { public static void main(String[] args) { SingleLinkedList3 singleLinkedList = new Sing...
2019-12-24 16:49:26
83
原创 从尾到头打印单链表
思路:1、上面的题的要求就是逆序打印单链表2、方式1:先将单链表进行反转操作,然后再遍历即可,这样的做法的问题是会破坏原来的单链表的结构,不建议3、方式2:可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果public static void reverseList(Node head) { if (head.next == null ...
2019-12-24 16:49:18
115
原创 合并两个有序的单链表,合并之后的链表依然有序
思路:新建一个单链表,每次都把两个有序链表中的更小的值加入到新链表中public class LinkedListConbine { public static void main(String[] args) { SingleLinkedList4 singleLinkedList1 = new SingleLinkedList4(); Singl...
2019-12-24 16:49:08
2111
3
原创 单向循环链表
自己靠感觉实现的一个单向循环链表,写的代码很low~~~public class Josephu { public static void main(String[] args) { SingleCircleLinkedList list = new SingleCircleLinkedList(); Node node1 = new Node(1)...
2019-12-24 16:49:02
86
原创 约瑟夫问题单向循环链表实现
约瑟夫(Josephu)问题(丢手帕问题)1、Josephu问题为:设编号为1,2,。。。n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,直到所有人出列为止,由此产生一个出队编号的序列。Josephu问题的解决:用一个不带头结点的循环链表来处理Josephu问题:先构成一个有n个结点的单循环链...
2019-12-24 16:48:50
273
原创 数组模拟栈
public class StackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(3); stack.push(1); stack.push(2); stack.push(3); stack...
2019-12-24 16:48:49
75
原创 测试冒泡排序算法对80000个数据进行排序所花费的时间
import java.text.SimpleDateFormat;import java.util.Date;public class BubbleSort { public static void main(String[] args) { int[] array = new int[80000]; for (int i = 0; i < ...
2019-12-24 16:47:34
828
原创 选择排序的实现
import java.util.Arrays;public class SelectionSort { public static void main(String[] args) { int[] array = new int[6]; for (int i = 0; i < 6; i++) { array[i] = ...
2019-12-24 16:47:27
83
原创 测试选择排序算法对80000个数据进行排序所花费的时间
import java.text.SimpleDateFormat;import java.util.Date;public class SelectionSort { public static void main(String[] args) { int[] array = new int[80000]; for (int i = 0; i &l...
2019-12-24 16:47:19
297
原创 测试希尔排序【移动法】对一亿个数据进行排序所花的时间
import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class ShellSort { public static void main(String[] args) { int[] array = new int[100000000]; ...
2019-12-24 16:47:13
216
原创 测试快速排序对一亿个数据进行排序花费的时间
import java.text.SimpleDateFormat;import java.util.Date;public class QuickSort { public static void main(String[] args) { int[] array = new int[100000000]; for (int i = 0; i &l...
2019-12-24 16:47:07
880
1
原创 快速排序的实现
import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class QuickSort { public static void main(String[] args) { int[] array = new int[10]; fo...
2019-12-24 16:47:01
67
原创 归并排序的实现
package com.itguigu.sort;import java.util.Arrays;public class MergeSort { public static void main(String[] args) { int[] array = new int[6]; for (int i = 0; i < 6; i++) ...
2019-12-24 16:46:51
88
原创 测试归并排序对一亿个数据进行排序花费的时间
import java.text.SimpleDateFormat;import java.util.Date;public class MergeSort { public static void main(String[] args) { int[] array = new int[100000000]; for (int i = 0; i &l...
2019-12-24 16:46:01
346
原创 基数排序的实现
import java.util.Arrays;public class RadixSort { public static void main(String[] args) { int[] array = new int[8]; int len = array.length; for (int i = 0; i < len; i...
2019-12-24 16:45:50
96
原创 测试基数排序分别对四千万和五千万个数据进行排序所花费的时间
测试四千万:package com.itguigu.sort;import java.text.SimpleDateFormat;import java.util.Date;public class RadixSort { public static void main(String[] args) { int[] array = new int[400000...
2019-12-24 16:45:43
287
原创 线性查找法
public class OrderSearch { public static void main(String[] args) { int[] array = new int[]{1, 2, 3, 4}; int index = orderSearch(array, 3); if (index == -1) { ...
2019-12-24 16:45:31
95
原创 二分查找法非递归实现
public class BinarySearch { public static void main(String[] args) { int[] array = {1, 8, 10, 89, 1000, 1234}; int index = binarySearch(array, 89); if (index != -1) { ...
2019-12-24 16:45:22
129
原创 二分查找递归实现
public class BinarySearch { public static void main(String[] args) { int[] array = {1, 8, 10, 89, 1000, 1234}; int index = binarySearch(array, 0, array.length - 1, 8); if ...
2019-12-24 16:45:16
114
原创 二分查找法-当有序数组中有多个相同的数值
思路:因为数组是有序的,当找到了想要查询的值的位置的时候,查看其左右两边的值是否和它相等,相等则把位置记录下来。import java.util.ArrayList;public class BinarySearch { public static void main(String[] args) { int[] array = {1, 8, 10, 89, 100...
2019-12-24 16:45:16
1670
1
原创 插值查找-递归实现
public class Interpolation { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; System.out.println("index = " + interpolation(array, 0, array...
2019-12-24 16:45:08
206
原创 插值查找-非递归实现
public class Interpolation { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int index = interpolation(array, 0, array.length - 1, 10); ...
2019-12-24 16:44:55
133
原创 斐波那契-递归
public class Fibonacci { public static void main(String[] args) { for (int i = 1; i < 12; i++) { System.out.printf("fibonacci(%d) = %d\n", i, fibonacci(i)); } }...
2019-12-24 16:44:51
157
原创 斐波那契-非递归
package com.itguigu.search;import java.util.Arrays;public class Fibonacci { public static void main(String[] args) { int[] array = fibonacci(10); System.out.println(Arrays.toS...
2019-12-24 16:44:40
59
原创 斐波那契【黄金分割】查找算法
import java.util.Arrays;public class FibonacciSearch { public static int maxSize = 20; public static void main(String[] args) { int[] array = {1, 8, 10, 89, 1000, 1234}; ...
2019-12-24 16:44:29
150
原创 模拟哈希表的实现
public class HashTableDemo { public static void main(String[] args) { HashTab hashTab = new HashTab(3); Employee one = new Employee(1, "a"); Employee two = new Employee(2...
2019-12-24 16:43:53
122
原创 二叉树的前中后序遍历的实现
package com.itguigu.binarytree;public class BinaryTreeDemo { public static void main(String[] args) { //创建一颗二叉树 BinaryTree binaryTree = new BinaryTree(); //创建需要的节点 ...
2019-12-24 16:43:49
130
原创 二叉树-前中后序查找
public class BinaryTreeSearch { public static void main(String[] args) { //创建一颗二叉树 BinarySearch binarySearch = new BinarySearch(); //创建需要的节点 Data root = new Data(0...
2019-12-24 16:43:37
85
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人