自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树-顺序存储二叉树

顺序存储二叉树就是可以用数组表示树;用数组的方法时,节点存在数组中,而不是使用引用,节点在数组中的位置对应它在树中的位置,下表为0的节点是根,为1的是左子树,2是右子树,依次类推节点在数组中的索引值为index(index从0开始,对应代表在二叉树的第几个元素)1.适用于满树(完全二叉树)2.节点的左子节点2*index+13.节点的右子节点2*index+24.父节点(index-)/2图示Java示例class ArrayBinaryTree { pri...

2020-12-14 09:57:00 353

原创 二叉树

遍历二叉树(前序/中序/后续)1.前序:父节点-->左子节点-->右子节点2.中序:左子节点-->父节点-->右子节点3.后续:左子节点-->右子节点-->父节点注:关键看父节点的顺序遍历思路:都是从根节点开始,并使用递归前序:1.先返回当前节点 2.判断左子节点是否为空,不为空则递归前序遍历 3.判断右子节点是否为空,不为空则递归前序遍历中序:1.判断当前节点的左子节点是否为空,不为空则递归前序遍历 2.返回当前节点...

2020-12-11 15:00:24 115

原创 树形结构

概念:树是一种数据结构,由边连接而成(java中使用引用来表示边),树的顶层只有一个节点,然后向下发散,类似颠倒的树树的术语1.路径:一个节点到另一个节点之间经过节点的顺序排列2.根:树顶端的节点3.父节点,子节点:树形结构中位于上层的节点为父节点,下面的称为子节点4.叶子节点:没有子节点的节点5.层:从根开始有几代6.二叉树:如果树中每个节点最多有两个子节点,则称为二叉树7.二叉搜索树:一个节点的左子节点的关键字值小于这个节点;右子节点的关键子值大于等于这个节点树形结构对比数组和链表

2020-12-11 11:12:18 793

原创 哈希表

哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表基于数组。优缺点1.无论哈希表中多少数据,插入只需要接近常量的时间,时间复杂度为O(1)2.基于数组的,数组创建后难以扩展,哈希表被填满后,性能下降3.没有一种简便的方法可以以任意的顺序遍历数据项,所以适用于如果不需要有序遍历数据,并且可以预估数据量已填入哈希

2020-12-10 19:23:37 1199

原创 时间复杂度浅理解

算法时间复杂度算法中的基本操作语句的重复执行次数是问题规模 n 的某个函数,用 T(n)表示,若有某个辅助函数 f(n),使得当 n 趋近于无穷大时,T(n) / f(n) 的极限值为不等于零的常数,则称 f(n)是 T(n)的同数量级函数。记作 T(n)=O( f(n)),称O( f(n) ) 为算法的渐进时间复杂度,简称时间复杂度。常见的时间复杂度1.常数阶O(1) int a = 2; int b = 1000; int c = a+b; 上述代码没有循环等复杂结构,执行次...

2020-12-09 17:52:38 125

原创 递归

概念 方法(或函数)调用自己,每次传入的变量都不同递归的规则(1) 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)(2) 方法的局部变量是独立的,不会相互影响(3) 如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据(4) 递归必须向退出递归的条件逼近,否则就是无限递归,出现 StackOverflowError(5) 当一个方法执行完毕,或者遇到 return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕示例:..

2020-12-09 15:05:56 75

原创 优先级队列

概念1.和普通队列一样,有队头和队尾,并且从队头移动数据2.数据项按照关键值有序,最小的数据项或者最大的数据项总是在队头,数据项插入时是有序的图示class PriorityQueue { private int maxSize;//优先级队列最大容量 private int[] array;//使用数组实现优先级队列 private int cur;//队列最后元素所在位置 //初始化队列 public PriorityQueue(int max

2020-12-08 15:28:45 91

原创

概念1.栈是一个先入后出(FILO)的线性结构2.对栈操作时,只在栈顶操作,栈底是固定的3.栈有入栈(push)和出栈(pop)操作图示Java代码(数组实现)class ArrayStack { private int top;//栈顶指针 private int[] array; private int maxSize;//栈容量 //初始化栈 栈顶为-1 public ArrayStack(int maxSize) { .

2020-12-07 15:36:10 88

原创 双向链表

双向链表单链表的缺点:1.只能沿着一个方向遍历,不能回到上一个链节点总结1.双向链表添加或删除一个节点时,要处理四个链接点的引用2.在链表尾部和中间操作有区别,需要处理下一个节点是否为空3.双向链表需要两个指针prev和next,prev指向前一个节点,next指向下一个节点示意图class DoubleLinkedList { //双向链表初始化一个头节点 DoubleNode head = new DoubleNode(""); public vo

2020-12-05 09:45:05 177

原创 单链表

概念1.链表是链式存储,以节点的方式存储2.链表包括data域,next域(对下一个链节点引用)3.链表有带头节点和无头节点的链表带头节点的图示 Java实现带头节点的单链表public class SingleList { // 初始化一个头节点 Node head = new Node(0, ""); //加入节点 public void addNode...

2020-12-03 19:32:26 151

原创 队列

概念1.队列是一个有序的列表,可以使用数组和链表实现2.队列是先入先出的模式(FIFO)一次性的队列(使用数组表示)思路分析1.需要两个变量来表示队列前后端处理位置head表示队列头,tail表示队列尾2.当加入元素时,判断队列是否为空,即head==tail,不为空就将tail后移;tail==maxSize-1 表时队列已满3.初始化head=-1;head为指向队列头的前一个位置;tail=-1;tail表示队列的最后一个数据Java代码class ArrayQueue {.

2020-12-01 21:01:29 269

原创 稀疏数组

稀疏数组概述当一个数组大部分数据为0或者未同一个值 可以用稀疏数组保存数据一. 二位数组->稀疏数组思路1.统计该二维数组有多少不同的值(除去默认值),以及有几行几列 作为稀疏数组的第一个元素2.把该二维数组不同值所在数组中的下标位置以及对应值保存在稀疏数组中总结:1.稀疏数组为(X+1)*3数组;X为不同值的个数 2.该数组第一个元素为对应二维数组的行,列,不同值的个数Java代码 int[][] arr = {{0, 0, 4, ...

2020-11-27 17:06:10 77

原创 冒泡排序

1.冒泡排序算法思路相邻两个元素进行比较,每一次都将最大的元素的移动到最右端例 {5,4,3,2,1}第一次排序{4,3,2,1,5}第二次排序{3,2,1,4,5}第三次{2,1,3,4,5}第四次{1,2,3,4,5}2.Java实现public class ArrayBub { @Test public void swap() { int tmp; int[] array = {77, 2, 3, 1,

2020-11-19 21:09:44 76

原创 使用RANDOM生成随机数

1.生成随机数 [tst@olap data]$ echo $RANDOM11325[tst@olap data]$  $RANDOM 的范围是 [0, 32767],如果超出范围,可指定范围 2.生成制定范围的随机数[tst@olap data]$ echo $(($RANDOM%30+1))25[tst@olap data]$ 生成1-30之间的随机数...

2018-12-28 11:07:06 405

空空如也

空空如也

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

TA关注的人

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