![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
厂花李茜茜
Hope is a good thing, maybe the best of things, and no good thing ever dies.
展开
-
哈希表(散列表)的实现,添加人员
问题描述: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址…),当输入该员工的id时,要求查找到该员工的所有信息. 要求: 不使用数据库,速度越快越好=>哈希表(散列) 添加时,保证按照id从低到高插入 哈希表结构: 哈希表——》数组——》链表 数据存在哪个数组的链表由散列函数决定,本例子用取模的简单方法 package com.atguigu.hashtab; import java.util.Scanner; public class Has原创 2020-05-24 15:39:59 · 211 阅读 · 0 评论 -
一些排序的总结和代码
冒泡排序:挨着的数两两比较,最大的数浮到最后。 选择排序:令min=a[0],每一趟选出最小值=min,得出其索引index,与a[0]交换 插入排序:将数据一个一个插入第一个数所在的数组 希尔排序——交换法; 快速排序:以中间个数为基准,比其小的放左边,比其大的放右边,分别向左向右递归。 基数排序:将数字以个十百位(取决于最大数的位数)来依次放入0-9的桶中(数组),最后取出的是有序数组。 pa...原创 2020-04-27 15:49:39 · 86 阅读 · 0 评论 -
递归问题——迷宫
**问题:**迷宫问题,从起点走到终点,红色为围墙,不可跨越。 **思路:**令三种情况0,1,2,3 没有走过的是0,有围墙为1,走过的是2,死路为3。使用递归不断重复。 需注意设计的策略:先下,后右。也可以先右,后下。。。得到的路径不同 代码: package com.atguigu.recursion; public class MiGong { public static vo...原创 2020-04-03 19:45:27 · 143 阅读 · 0 评论 -
递归问题的调用机制(与栈有关),递归阶乘,递归打印
没有else时 public static void test(int n) { if (n > 2) { test(n - 1); } //else { System.out.println("n=" + n); //} } 因为调用的栈中还有n=4;n=3;n=2;递归调用规则: 当程序执行到一个方法时,就会开辟一个独立的空间(栈) 每个空间的数据(局部...原创 2020-04-03 13:40:57 · 254 阅读 · 0 评论 -
逆波兰计算器与中缀表达式转后缀表达式
中缀表达式转后缀表达式:用两个栈模拟,为了方便S2用List表示 package com.atguigu.stack; import java.util.ArrayList; import java.util.List; import java.util.Stack; public class PolandNotation { public static void main(String...原创 2020-04-02 20:47:34 · 120 阅读 · 0 评论 -
Java用数组模拟栈的使用
模拟功能 栈的弹入弹出 package com.atguigu.stack; import java.util.Scanner; public class ArrayStackDemo { public static void main(String[] args) { //测试一下ArrayStack 是否正确 //先创建一个ArrayStack对象->表示栈 Arra...原创 2020-03-30 22:48:40 · 110 阅读 · 0 评论 -
Java实现Josephu问题
问题描述: Josephu 问题为:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 n = 5 , 即有5个人 k = 1, 从第一个人开始报数 m = 2, 数2下 思路: 一、 构建一个单向的环形链表思路 先创...原创 2020-03-30 20:39:02 · 125 阅读 · 0 评论 -
双向链表的基本操作(增删改查)
区别于单向链表~有pre和next package com.atguigu.linkedlist; public class DoubleLinkedListDemo { public static void main(String[] args) { // 测试 System.out.println("双向链表的测试"); // 先创建节点 HeroNode2 hero1 ...原创 2020-03-26 20:19:15 · 255 阅读 · 0 评论 -
单链表的增删改查(节点数,反转)
package com.atguigu.linkedlist; import java.util.Stack; public class SingleLinkedListDemo { public static void main(String[] args) { //进行测试 //先创建节点 HeroNode hero1 = new HeroNode(1, "宋江", "及时...原创 2020-03-24 11:30:21 · 85 阅读 · 0 评论 -
队列——用数组模拟
队列是先进先出,典型例子:银行排队系统 代码实现: package com.atguigu.queue; import java.util.Scanner; public class ArrayQueueDemo { public static void main(String[] args) { //测试一把 //创建一个队列 ArrayQueue queue = new A...原创 2020-03-17 15:51:46 · 67 阅读 · 0 评论 -
Java二维数组与稀疏数组的转换
一个棋盘中的 package com.atguigu.sparsearray; //棋盘转换成二维数组,然后转成稀疏数组 public class SparseArray { public static void main(String[] args) { //创建一个原始二维数组11*11 //0表示没有棋子 ,1表示黑色,2蓝色 int chessArr1[][] =new in...原创 2020-03-16 16:07:26 · 67 阅读 · 0 评论