数据结构
patient&training
这个作者很懒,什么都没留下…
展开
-
LinkedList源码学习笔记
LinkedList简介 博文参考https://blog.csdn.net/ns_code/article/details/35787253 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。 LinkedList同样是非线程安全的,只在单线程下适合使用。 LinkedLi...原创 2018-09-09 21:38:34 · 97 阅读 · 0 评论 -
数据结构——图论(java)
一.基本概念1、顶点(vertex)表示某个事物或对象。由于图的术语没有标准化,因此,称顶点为点、节点、结点、端点等都是可以的。2、边(edge)通俗点理解就是两个点相连组合成一条边,表示事物与事物之间的关系。需要注意的是边表示的是顶点之间的逻辑关系,粗细长短都无所谓的。包括上面的顶点也一样,表示逻辑事物或对象,画的时候大小形状都无所谓。3、同构(Isomorphism )...原创 2018-10-06 22:03:30 · 5251 阅读 · 1 评论 -
二叉堆(java)学习笔记
转载:https://www.cnblogs.com/skywang12345/p/3610390.html1.什么是二叉堆二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。2.插入3.删除父节点与子节点的关系假...转载 2018-09-27 23:30:01 · 150 阅读 · 0 评论 -
数据结构——不相交集(查并集java)
1.基本介绍一个集合S,集合中一个元素a。a的等价类是S的一个子集,该子集包含所有与a有关系的元素。等价类形成是对S的一个划分且S中的每一个成员恰好出现在一个等价类中。这样,判断a与b是否有关系,只需要判断a与b是否在一个等价类中即可。 对于集合S划分,取任意两个等价类,Si与Sj,如果Si∩Sj = ∅,则称这些集合不相交。对于不相交集,有两种操作,Union/Find操...原创 2018-10-05 15:23:36 · 1097 阅读 · 0 评论 -
完全二叉树学习笔记
参考:https://blog.csdn.net/autfish/article/details/525359671.什么是完全二叉树1.除二叉树最后一层外,其他各层的节点数都达到最大个数2.最后一层从左向右的叶节点连续存在,只缺右侧若干节点,就是完全二叉树。如下图,每一层都是从左向右摆放节点,每个节点都是摆满两个子节点后才向右移动到下一个节点,一层摆满后向下移动一层,直到摆放...转载 2018-09-27 07:17:29 · 111 阅读 · 0 评论 -
数据结构——交换排序(冒泡排序,快速排序java)
一.冒泡排序1.原理:比较两个相邻的元素,将值大的元素交换至右端。依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。2.时间复杂度1.如果我们的数据正序,只需要走一趟即可完成排序。所需的...原创 2018-10-02 18:42:40 · 215 阅读 · 0 评论 -
数据结构——归并排序(java)
1.算法思想归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将数组分成二组A,B,如果这二组组内的数据都是有序的,那么就可以很方便的将这二组数据进行排序。如何让这二组组内数据有序了?可以将A,B组各自再分成二组。依次类推,当分出来的小组只有一个数据时,可以认为这个小组组内已经达到了有序,然后再合并相邻的二个...原创 2018-10-02 17:45:24 · 168 阅读 · 0 评论 -
数据结构——选择排序(堆排序,简单选择排序java)
一.堆排序1.前言:如果读者是个数据结构小白,建议读者先看看数据的二叉树,然后再看完全二叉树和二叉堆,再来看堆排序就能很好的理解了。2.堆排序算法介绍堆是一种重要的数据结构,为一棵完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1),如果它有左子树,那么左子树的位置是2i+1,如果有右子树,右子树的位置是2i+2,如果有父节点,父...原创 2018-10-02 11:56:49 · 243 阅读 · 0 评论 -
数据结构——插入排序(直接插入排序,希尔排序java)
一.直接插入排序:1、基本思想直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。2、复杂度分析当最好的情况,也就是要排序的表本身就是有序的,...原创 2018-10-01 20:27:06 · 389 阅读 · 0 评论 -
hash散列
转载:https://blog.csdn.net/Carol_1992/article/details/76735656哈希:哈希是一种用以常数平均时间执行插入、删除和查找的技术。但是,一般不支持诸如FindMin、FindMax以及以线性时间按排序顺序将整个表进行打印的操作。进一步讲,hash就是把任意长度的输入(预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是...转载 2018-10-01 19:03:35 · 303 阅读 · 0 评论 -
平衡二叉树(AVL树)
转载:https://blog.csdn.net/javazejian/article/details/53892797定义:一棵AVL树是其每个结点的左子树和右子树的高度最多相差1的二叉查找树(空树的高度为-1),这个差值也称为平衡因子平衡二叉树的设计与实现 ok~,有了旋转的概念后,我们接着了解如何通过旋转来修复一棵失衡的二叉树,这里假设结点X是失衡点,它必须重新恢复...转载 2018-09-17 22:25:59 · 94 阅读 · 0 评论 -
二叉搜索树学习笔记
定义:二叉查找树是满足以下条件的二叉树: 1.左子树上的所有节点值均小于根节点值; 2.右子树上的所有节点值均不小于根节点值; 3.左右子树也满足上述两个条件。public class SearchBinaryTree { private Node root; private int size; public SearchB...转载 2018-09-17 21:45:33 · 133 阅读 · 0 评论 -
ArrayList源码学习笔记
1.本文要点: (1)ArrayLisrt简介: ArrayList底层是数组实现,查询快增删慢;那么为什么查询慢,怎么实现的呢?下面我听我分析源码来解释。 本文介绍方法有get,set,remve,add;更多详细方法源码可参考https://blog.csdn.net/ljcITworld/article/details/52041836 (2)...原创 2018-09-09 21:15:44 · 135 阅读 · 0 评论