
Java-数据结构与算法
文章平均质量分 55
星星leslie
这个作者很懒,什么都没留下…
展开
-
单例设计模式
单例设计模式概述如何实现饿汉式懒汉式 概述 设计模式是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式。免去我们自己再思考和摸索。 单例,顾名思义,单个实例。就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法。要让类在一个虚拟机中只能产生一个对象,首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始无法得到该类的对象,只原创 2021-08-31 23:54:38 · 224 阅读 · 0 评论 -
树与二叉树
树原创 2021-07-31 15:30:55 · 259 阅读 · 0 评论 -
查找
查找顺序查找折半查找(二分查找)递归非递归测试 顺序查找 package com.cpw.search; import java.util.Scanner; public class SeqSearch { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int arr[] = {1, 9, 11, -1, 34, 89}; Sys原创 2021-07-29 11:53:44 · 200 阅读 · 0 评论 -
哈希表(散列表)
哈希表基本介绍应用问题思路分析代码实现定义雇员节点定义单链表定义哈希表测试代码运行结果 基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通 过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组 叫做散列表。 应用 问题 思路分析 代码实现 定义雇员节点 class Emp { public int id; public String name; publ原创 2021-07-29 09:50:19 · 304 阅读 · 0 评论 -
排序算法
排序算法冒泡排序选择排序插入排序希尔排序快速排序归并排序 冒泡排序 思想: 通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部 优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。 package com.cpw.sort; import java.util.Arrays; public class原创 2021-07-28 11:04:01 · 230 阅读 · 1 评论 -
第三篇 栈
栈数组模拟栈 数组模拟栈 class ArrayStack { //栈的大小 private int maxSize; //数组 数组模拟栈 数据就放在该数组中 private int[] stack; //top表示栈顶 初始化为-1 private int top = -1; //构造器 public ArrayStack(int maxSize) { this.maxSize = maxSize; stack = new int[this.maxSize]; } //栈满原创 2021-07-22 13:50:37 · 194 阅读 · 0 评论 -
第二篇 链表
链表单链表定义节点建立单链表测试代码 建立单链表(按照节点输入顺序)测试代码 建立单链表(按照节点编号顺序)删除节点修改节点获取链表长度查找倒数第K个节点单链表逆置利用栈实现链表逆置头插法实现链表逆置单链表合并(两个有序单链表 合并之后依然有序)双链表定义节点建立双向链表测试建立双向链表(按节点加入顺序)建立双向链表(按节点编号顺序)修改节点删除节点约瑟夫问题(循环链表)场景代码实现定义节点循环链表测试 单链表 定义节点 class HeroNode { public int no; public St原创 2021-07-20 21:23:31 · 344 阅读 · 1 评论 -
第一篇 队列
第一篇 队列 class CircleArray { private int maxSize; private int front; private int rear; private int[] arr; //初始化队列 public CircleArray(int arrMaxSize) { //front rear 初始值为0 这里不再赋值。因为默认会赋初值0; maxSize = arrMaxSize; arr = new int[maxSize]; } //判断队列原创 2021-07-18 19:12:15 · 94 阅读 · 0 评论