自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PaperPP

分享一个靠谱的免费论文查重网站给大家分享一个靠谱的免费论文查重网站PaperPP:http://www.paperpp.com,可以一站解决“论文查重、改重、降重”等问题

2021-10-13 16:45:07 93

原创 平衡二叉树

平衡二叉树给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在.左边BST存在的问题分析:1)左子树全部为空,从形式上看,更像一个单链表.2)插入速度没有影响3)查询速度明显降低(因为需要依次比较), 不能发挥BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢4)解决方案-平衡二叉树(AVL)基本介绍平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树, 可以保证查询效率高。

2021-04-25 12:56:56 110

原创 二叉排序树

二叉排序树背景分析给一个数列{7,1,2,4,6,5,8},要求能够高效的的完成对数据的查询和添加解决方案:一 使用数组数组未排序, 优点:直接在数组尾添加,速度快。 缺点:查找速度慢.数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保证数组有序,在添加新数据时,找到插入位置后,后面的数据需整体移动,速度慢。二 使用链式存储-链表不管链表是否有序,查找速度都慢,添加数据速度比数组快,不需要数据整体移动。三 二叉树排序二叉排序树介绍二叉排序树:BST: (Binary So

2021-04-20 19:59:28 170

原创 赫夫曼树

赫夫曼树基本介绍1)给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。2)赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。赫夫曼树几个重要概念和举例说明1)路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。2)结

2021-04-19 19:18:49 66

原创 堆排序

堆排序堆排序基本介绍1)堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。2)堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意 : 没有要求结点的左孩子的值和右孩子的值的大小关系。3)每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆4)大顶堆举例 :大顶堆特点:arr[i] >= arr[2i+1] && arr[i] >=

2021-04-19 19:17:57 85

原创 线索化二叉树

线索化二叉树基本介绍n个结点的二叉链表中含有n+1 【公式 2n-(n-1)=n+1】 个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索")这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种一个结点的前一个结点,称为前驱结点一个结点的后一个结点,称为后继结点应用案例思路分析: 中序

2021-04-16 19:47:23 80

原创 顺序存储二叉树

顺序存储二叉树从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为 2 * n + 1第n个元素的右子节点为 2 * n + 2第n个元素的父节点为 (n-1) / 2n : 表示二叉树中的第几个元素(按0开始编号给你一个数组 {1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历。 前序遍历的结果应当为 1,2,4,5,3,6,7package com.yuxi.lesson10

2021-04-16 19:44:50 129

原创 二叉树

二叉树为什么需要树这种数据结构数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 。链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即 】可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历) 。树存储方式的分析能提高数据存储,读取的效率, 比如利用 二叉

2021-04-15 23:04:51 56

原创 哈希表

哈希表散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。Google 上机题 :有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id时,要求查找到该员工的 所有信息.要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)package com.yux

2021-04-12 16:32:01 65

原创 查找算法

查找算法查找算法介绍在java中,我们常用的查找有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值。思路:如果查找到全部符合条件的值package com.yuxi.lesson08;public class SeqSearch { public static void main(String[] a

2021-04-11 20:32:20 72

原创 排序二

排序(二)快速排序快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。package com.yuxi.lesson07;import java.util.Arrays;public class QuickSort { public static void main(Stri

2021-04-10 19:14:44 99

原创 排序

排序 (一)冒泡排序冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。package com.yuxi.lesson06;import java.text.Simp

2021-04-09 21:15:08 87 2

原创 递归

递归概念递归就是方法自己调用自己,每次调用时传入不同的变量。递归应用场景 : 迷宫问题(回溯), 递归(Recursion)递归调用机制打印问题阶乘问题package com.yuxi.lesson05;public class RecursionTest { public static void main(String[] args) { //通过打印问题,回顾调用机制 test(4); int res = factorial

2021-04-08 20:34:23 72

原创

栈 ( 一 )栈的介绍栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除栈的应用场景子程序的调用:在跳往子程序前,会先将下

2021-04-07 22:42:08 67

原创 链表

链表链表介绍链表是有序的列表,但是它在内存中存储如下 :[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YmXSrVYf-1617805501952)(C:\Users\shiyu\AppData\Roaming\Typora\typora-user-images\image-20210407213937504.png)]链表是以节点的方式来存储,是链式存储。每个节点包含data域,next域:指向下一个节点。如图:发现链表的各个节点不一定是连续存储。链表分带头

2021-04-07 22:25:48 149 1

原创 稀疏数组和队列

稀疏数组和队列稀疏数组基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值。把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。应用实例使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等)。把稀疏数组存盘,并且可以从新恢复原来的二维数组数。整体思路分析。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7W7fdbEb-1617

2021-04-07 22:24:50 77 1

原创 注解和反射

注解与反射注解package com.kuang.annotation;import java.util.ArrayList;/** * 什么是注解 * @author shiyu * @date 2021-04-01 15:21 */public class Test01 extends Object{ //重写 @Override public String toString() { return super.toString();

2021-04-01 21:05:27 54

原创 多线程(二)

多线程(二)线程安全问题方式一 :同步代码块* synchronized(同步监视器){* //需要被同步的代码* }* 说明:1, 操作共享数据的代码,即为需要被同步的代码* 2,共享数据 :多个线程同时操作的变量。比如 :ticket* 3,同步监视器 ,俗称 :锁。任何一个类的对象,都可以充当锁。* 要求 : 多个线程必须用同一把锁。package com.kuang.syn;public class Unsa

2021-04-01 20:58:07 55

原创 多线程

多线程(一)多线程的创建方式一 继承于Thread类1,创建一个继承于Thread类的子类2.重写Thread类的run()3.创建Thread类的子类的对象4.通过此对象调用start()方式二 :实现Runnable接口1,创建一个实现了Runnable接口的类2,实现类去实现Runnable中得抽象方法run();3,创建实现类的对象4,将次对象作为参数传递到Thread类的构造器中,创建Thread类得对象 5,通过Thread类大的对象调用start()比较创建线程的

2021-03-31 19:31:22 81

原创 网络编程

网 络编程1.1 概述计算机网络 : 计算机网络是指将地理位置不同的独有独立功能的多台计算机及外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程的目的 : 无线电台…传播信息交流,数据减缓。通信想要达到的效果需要什么 :​ 1.如何准确的定位网络上的一台主机,192.168.16.124 :端口 ,定位到这个计算机上的某个资源。​ 2.找到了这个主机,如何传输数据?javaweb : 网页编程 B/S

2021-03-30 20:18:55 88

空空如也

空空如也

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

TA关注的人

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