自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 设计模式之单例设计模式

单例设计模式懒汉式单机版的懒汉式多线程下的懒汉式饿汉式模式的定义:保证一个类只有一个实例,并且提供一个全局访问点。场景:重量级对象,不需要多个实例,比如线程池,数据库连接池懒汉式特点:延迟加载,真正使用的时候才开始实例化单机版的懒汉式public class LazySingleton { private static LazySingleton instance; private LazySingleton() { } public stat

2021-08-22 12:22:35 89

原创 堆树和堆排序

堆树堆树的特点1.是完全二叉树2.每个节点都大于等于(或小于等于)其子树。堆树的分类1.大顶堆,每个节点都大于等于其子树2.小顶堆,每个节点都小于等于其子树堆排序1.按照完全二叉树保存数组(建堆)2.选最后一个非叶子节点开始堆化(长度为n的数组,第n/2-1个为第一个非叶子节点)堆排序代码(以大顶堆为例)public class HeapTree { public static void heapSort(int[] data) { int len = data

2021-08-21 19:37:53 167

原创 哈夫曼树的构造和代码实现

哈夫曼树1.哈夫曼树的定义2. 哈夫曼树的构造3.哈夫曼树的特点:4.代码实现1.哈夫曼树的定义树中的 节点被赋予一个表示某种意义的数值,称为该节点的权。给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。2. 哈夫曼树的构造1.将n个结点分别作为n棵只含一个节点的二叉树,构建成森林F2.构造一个新结点,从F中选取两棵根结点权值最小的树作为左右子树

2021-08-19 19:45:09 903

原创 插入&希尔&归并&选择&冒泡&快速排序

插入&希尔&归并&选择&冒泡&快速排序1.插入排序2.希尔排序3.归并排序4.选择排序5.冒泡排序6.快速排序六种排序的分析总结1.插入排序一个很形象的例子:打扑克。手里的扑克牌(数组)分成两部分,一部分是你手里的牌(已经排好序),一部分是要拿的牌(无序)。然后将拿过来的牌插入到自己的手里面去(把一个无序的数列一个个插入到有序数列中去)。具体步骤如下:1.将数组分成已排序和未排序段。初始化已排序的只有一个元素。2.到未排序取元素插入到已排序段,并保证插入后

2021-08-16 01:36:34 90

原创 二叉搜索树的增,删,查

二叉搜索树二叉搜索树也叫作二叉查找树,二叉排序树。具备以下的特征:1、若它的左子树不空,则其左子树上的所有结点的值均小于它根结点的 ; 2、若它的右子树不空,则其右子树上的所有结点的值均大于根结点的值; 3、它的左、右子树也分别为二叉查找树。如图,为一棵二叉查找树:插入操作二叉树查找树b插入操作x的过程如下:1、若b是空树,则直接将插入的结点作为根结点插入。2、x等于b的根结点的数据的值,则直接返回,否则。3、若x小于b的根结点的数据的值,则将x要插入的结点的位置改变为b的左子树

2021-08-12 16:16:55 109

原创 二叉树的层次遍历(数组+链表)

二叉树的层次遍历层次遍历:简单点说就是按照从上到下的层次一层一层往下,每一层都按顺序遍历。如图,遍历的结果应该是:ABCFEGD层次遍历的步骤是:1.对于不为空的结点,先把该结点加入到队列中2.从队中拿出结点,如果该结点的左右结点不为空,就分别把左右结点加入到队列中3.重复以上操作直到队列为空public class NodeLevelPrint { public void levelPrint(MyTreeNode root){ if(root==null){

2021-08-11 17:30:41 527

原创 二叉数的前序、中序、后序遍历(链表结构和数组结构)

二叉树的前、中、后序遍历简单的介绍三种遍历:(1)先(根)序遍历(根左右)(2)中(根)序遍历(左根右)(3)后(根)序遍历(左右根)以后(根)序遍历为例,每次都是先遍历树的左子树,然后再遍历树的右子树,最后再遍历根节点,以此类推,直至遍历完整个树。以上图作为例子:前序遍历结果:ABDHIECFG中序遍历结果:HDIBEAFCG后序遍历结果:HIDEBFGCA二叉树可以以链表的结构存储也可以链表的结构存储,也可以以数组的结构存储,在需要考虑计算机运算性能的情况下,使用数组结构进行存储(

2021-08-11 15:26:15 519

原创 约瑟夫杀人算法

约瑟夫杀人算法把M个俘虏围成一圈,从1数数,数到N时,杀掉一个人,重新开始从1数数到N再杀掉,以此类推,直到剩下一个人。类比:丢手绢public class Josef { private Node head; public Josef(int m,int n) { createCircle(n); delete(n); }//根据所给M创建单向链表 public void createCircle(int m){

2021-08-09 17:16:03 299

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除