算法
dongyu1703
这个作者很懒,什么都没留下…
展开
-
java实现ALV树双旋转
package course;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-09-18 16:32:39 · 335 阅读 · 0 评论 -
java实现归并排序
package course;import java.util.Arrays;public class MergeSort { public static void main(String[] args) { int[] arr = {8, 4, 5, 7, 1, 3, 6, 2}; int[] temp = new int[arr.length]; // 归并排序需要一个额外...原创 2019-09-02 14:12:00 · 162 阅读 · 0 评论 -
java实现快速排序
package course;import java.util.Arrays;public class QuickSort { public static void main(String[] args) { int[] arr = {-9, 78, 0, 23, -567, 70}; quickSort(arr, 0, arr.length-1); System.out....原创 2019-09-01 12:42:30 · 130 阅读 · 0 评论 -
java实现希尔排序
package course;import java.util.Arrays;public class ShellSort { public static void main(String[] args) { int[] arr = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0}; shellSort(arr); // 测试一下希尔排序交换法的速度,给8...原创 2019-08-31 21:51:24 · 178 阅读 · 0 评论 -
java实现插入排序
package course;import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int[] arr = {101, 34, 119, 1}; insertSort(arr); // 测试一下插入排序的速度,给80000个数据,测试一下(3...原创 2019-08-30 16:52:02 · 128 阅读 · 0 评论 -
java实现选择排序
package course;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class SelectSort { public static void main(String[] args) { int[] arr = {101, 34, 119, 1...原创 2019-08-30 15:55:34 · 103 阅读 · 0 评论 -
java实现冒泡排序
package course;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;public class BubbleSort { public static void main(String[] args) { int arr[] = {3, 9, -1, 10, -...原创 2019-08-30 15:07:23 · 104 阅读 · 0 评论 -
常见排序算法的时间复杂度
排序法 平均时间 最差情形 稳定度 额外空间 备注 冒泡 O() O() 稳定 O(1) n小时较好 交换 O() O() 不稳定 O(1) n小时较好 选择 O() O() 不稳定 O(1) n小时较好 插入 O() O() 稳定...原创 2019-08-30 10:27:44 · 377 阅读 · 0 评论 -
java实现八皇后问题
代码:package course;public class Queen8 { // 定义一个max表示共有多少个皇后 int max = 8; // 定义数组array,保存皇后放置位置的结果,比如arr = {0, 4, 7, 5, 2, 6, 1, 3} int[] array = new int[max]; static int count = 0; public s...原创 2019-08-29 18:40:37 · 1064 阅读 · 1 评论 -
java实现基数排序
package course;import java.util.Arrays;public class RadixSort { public static void main(String[] args) { int[] arr = {53, 3, 542, 748, 14, 214}; radixSort(arr); System.out.println("排序后:" +...原创 2019-09-03 10:33:16 · 220 阅读 · 0 评论 -
java实现二分查找算法
package course;import java.util.ArrayList;import java.util.List;// 注意:使用二分查找的前提是该数组是有序的public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 8, 10, 89, 1000, 1...原创 2019-09-05 10:58:24 · 165 阅读 · 0 评论 -
java实现二叉排序树(创建,遍历和删除)
package course;public class BinarySortTreeDemo { public static void main(String[] args) { int[] arr = {7, 3, 10, 12, 5, 1, 9, 2}; BinarySortTree tree = new BinarySortTree(); // 循环的添加节点到二叉排序树...原创 2019-09-12 21:18:34 · 757 阅读 · 0 评论 -
java实现堆排序
package course;import java.util.Arrays;public class HeapSort { public static void main(String[] args) { // 要求将数组进行升序排列 int arr[] = {4, 6, 8, 5, 9, -1, 90, 89, 4, 56, -999}; heapSort(arr);...原创 2019-09-09 19:07:53 · 327 阅读 · 0 评论 -
java实现中序线索化二叉树
package course;public class ThreadedBinaryTreeDemo { public static void main(String[] args) { // 测试中序线索二叉树 HeroNodes1 root = new HeroNodes1(1, "tom"); HeroNodes1 node2 = new HeroNodes1(3, "j...原创 2019-09-09 16:40:17 · 292 阅读 · 0 评论 -
java实现顺序存储二叉树的前序中序后序遍历
package course;public class ArrBinaryTreeDemo { public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5, 6, 7}; // 创建一个ArrBinaryTree ArrBinaryTree arrBinaryTree = new ArrBinaryTr...原创 2019-09-09 12:13:04 · 357 阅读 · 0 评论 -
java实现二叉树前序中序后序遍历查找以及删除节点
package course;public class BinaryTreeDemo { public static void main(String[] args) { // 先需要创建一颗二叉树 BinaryTree binaryTree = new BinaryTree(); // 创建需要的节点 HeroNodes root = new HeroNodes(1, "...原创 2019-09-09 11:59:20 · 360 阅读 · 0 评论 -
java实现哈希表
package course;import java.util.Scanner;public class HashTabDemo { public static void main(String[] args) { // 创建哈希表 HashTab hashTab = new HashTab(7); // 写一个简单菜单 String key = ""; Scann...原创 2019-09-08 11:41:43 · 293 阅读 · 0 评论 -
java实现斐波那契查找
package course;import java.util.Arrays;public class FibonacciSearch { public static int maxSize = 20; public static void main(String[] args) { int[] arr = {1, 8, 10, 89, 1000, 1234}; Syst...原创 2019-09-07 10:15:53 · 698 阅读 · 1 评论 -
java实现插值查找算法
package course;import java.util.Arrays;// 插值查找是二分查找的改进,mid的值用自适应的方法求得// 对于数据量较大,关键字分布比较均匀的查找表来说采用插值查找速度较快// 关键字分布不均匀(跳跃性很大)的情况下,该方法不一定比折半查找要好public class InsertValueSearch { public static voi...原创 2019-09-06 10:13:48 · 244 阅读 · 0 评论 -
java实现迷宫回溯
代码:package course;public class MiGong { public static void main(String[] args) { // 先创建一个二维数组模拟迷宫 // 地图 int[][] map = new int[8][7]; // 使用1表示墙 // 上下全部置为1 for (int i = 0; i < 7; ...原创 2019-08-26 10:56:22 · 489 阅读 · 1 评论 -
java双向链表基本操作实现
代码:package course;public class DoubleLinkedListDemo { public static void main(String[] args) { // 测试 System.out.println("双向链表的测试"); // 先创建节点 HeroNode2 hero1 = new HeroNode2(1, "宋江", "及时雨...原创 2019-08-13 11:47:06 · 390 阅读 · 0 评论 -
java栈实现综合计算器
代码:package course;public class Calculator { public static void main(String[] args) { // 完成表达式的运算 String exp = "70+20*6-4"; // 创建两个栈,一个数栈一个符号栈 ArrayStack2 numStack = new ArrayStack2(10)...原创 2019-08-15 20:55:59 · 897 阅读 · 0 评论 -
[LeetCode] Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i...原创 2019-01-28 10:00:04 · 164 阅读 · 0 评论 -
[LeetCode] Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the samee...原创 2019-01-27 21:58:32 · 122 阅读 · 0 评论 -
算法-动态规划 Dynamic Programming
转载自:https://blog.csdn.net/u013309870/article/details/75193592前言最近在牛客网上做了几套公司的真题,发现有关动态规划(Dynamic Programming)算法的题目很多。相对于我来说,算法里面遇到的问题里面感觉最难的也就是动态规划(Dynamic Programming)算法了,于是花了好长时间,查找了相关的文献和资料准备彻底...转载 2018-08-01 13:41:54 · 118 阅读 · 0 评论 -
句子反转
题目描述:给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”输入描述:输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)输出描述:对于每个测试示例,要求输出句子中单词反转后形成的句子示例一:输入...原创 2018-07-22 21:58:01 · 370 阅读 · 0 评论 -
树的高度
题目描述:现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度输入描述:输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号输出描述:输出树的高度,为一个整数示例1:输入50 10 21 31 ...原创 2018-07-22 15:27:10 · 351 阅读 · 0 评论 -
数串
题目描述:设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613输入描述:有多组测试样例,每组测试样例包含两行,第一行为一个整数N(N<=100),第二行包含N个数(每个数不超过1000,空格分开)输出描述:每...原创 2018-07-19 15:48:41 · 329 阅读 · 0 评论 -
求数列的和
题目描述:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。输入描述:输入数据有多组,每组占一行,由两个整数n(n < 10000)和m(m < 1000)组成,n和m的含义如前所述输出描述:对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。示例一:输入81 42 2输出94.733.41解...原创 2018-07-24 10:54:46 · 127 阅读 · 0 评论 -
水仙花数
题目描述:春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数输入描述:输入数据有多组,每组占一行,包括两个整数m和n(100 ≤ m ≤ n ≤ 999)。输出描述:对于每个测试实例,要求输出所有在给定...原创 2018-07-24 10:34:23 · 1094 阅读 · 0 评论 -
[LeetCode] Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters.Example 1:Input: "abcabcbb"Output: 3 Explanation: The answer is "abc", with the length of 3. Example 2:I...原创 2019-01-28 14:14:08 · 107 阅读 · 0 评论 -
[LeetCode] Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).You may assume nums1 and n...原创 2019-01-29 10:31:54 · 120 阅读 · 0 评论 -
java逆波兰(后缀表达式)计算器实现
代码:package course;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Stack;public class PolandNotation { public static void main(String[] args) ...原创 2019-08-24 18:54:13 · 380 阅读 · 0 评论 -
java单链表各种操作实现
代码:package course;import java.util.Stack;public class SingleLinkedListDemo { public static void main(String[] args) { // 测试 // 先创建节点 HeroNode hero1 = new HeroNode(1, "宋江", "及时雨"); Hero...原创 2019-08-11 16:58:20 · 196 阅读 · 0 评论 -
java实现栈(数组)
代码:package course;import java.util.Scanner;public class ArrayStackDemo { public static void main(String[] args) { // 测试一下ArrayStack是否正确 // 先创建一个ArrayStack对象表示栈 ArrayStack stack = new Arr...原创 2019-08-14 16:57:33 · 142 阅读 · 0 评论 -
java数组实现环形队列
代码:package course;import java.util.Scanner;public class CircleArrayQueue { public static void main(String[] args) { // 测试 // 创建一个队列 CircleQueue queue = new CircleQueue(3); char key = '...原创 2019-08-10 09:55:11 · 1142 阅读 · 0 评论 -
java实现约瑟夫问题(环形链表)
Josephu (约瑟夫,约瑟夫环) 问题Josephu问题为:设编号为1,2,3,。。。n的n个人围坐一圈,设定编号为k (1<=k<=n) 的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,以此类推,直到所有人出列为止,由此产生一个出队编号的序列。提示:用一个不带头节点的循环链表来处理约瑟夫问题:先构成一个有n个节点的单循环链表,然后由k...原创 2019-08-14 12:12:09 · 608 阅读 · 0 评论 -
java稀疏数组代码实现
将数组转为稀疏数组存到磁盘中,再从磁盘中读取稀疏数组恢复原来的数组:代码:package course;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOExcepti...原创 2019-08-09 11:29:07 · 298 阅读 · 0 评论 -
[LeetCode] ZigZag Conversion
The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L S I I...原创 2019-02-12 10:38:19 · 145 阅读 · 0 评论 -
[LeetCode] Reverse Integer
Given a 32-bit signed integer, reverse digits of an integer.Example 1:Input: 123Output: 321Example 2:Input: -123Output: -321Example 3:Input: 120Output: 21Assume we are dealing with...转载 2019-02-17 12:25:55 · 247 阅读 · 0 评论