![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 77
小白猿同学
在校大学生
展开
-
HashMap和Hashtable区别
HashMap和Hashtable区别上次我们介绍过了集合类中ArrayList和LinkedList的区别,这次介绍一下集合类中映射存储映射关系的HashMap和Hashtable区别同样,我们从源码进行分析1. 基础结构1.1 HashMapHashMap的底层存储为Node类型的数组,每个数组元素记录了每个Node链表的第一个节点Node中保存每个元素的以下内容hash :key的哈希值key :节点的key,类型和定义HashMap时的key相同value :节点的val原创 2021-10-01 17:31:35 · 98 阅读 · 0 评论 -
ArrayList与LinkedList区别
ArrayList与LinkedList区别基本结构ArrayListtransient Object[] elementData;LinkedListclass Node<E>{ E item;//存储的元素 LinkedList.Node<E> next;//指向下一个节点的指针 LinkedList.Node<E> prev;//指向上一个节点的指针}首先我们都知道,ArrayList是基于动态数组实现的数据结原创 2021-09-21 23:06:26 · 286 阅读 · 0 评论 -
剑指Offer 26 树的子结构
剑指Offer 26 树的子结构题目描述: 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。LeetCode链接首先,这个题要和判断B树是不是A树的子树区分如下左图所示,t 既是s的子结构也是s的子树如下右图所示,t只是s的子结构而不是s的子树(因为t不包含s中以4为根节点子树的全部,即0号节点)**过程分析:**如果B是A的子结构,那么就需要判断A树中以任意一个节点为根的子树有没有包含B,因此原创 2021-08-21 22:36:08 · 106 阅读 · 2 评论 -
20.归并排序
归并排序1.定义归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。2. 算法步骤把长度为n的输入序列分成两个长度为n/2的子序列;将这两个子序列再依次拆分成两个子序列(当前子序列长度的一半),直至序列中元素个数小于等于1;依次将两个排序好的子序列合并,最终形成一个有序的排序序列。原创 2021-08-16 09:32:01 · 141 阅读 · 0 评论 -
19.快速排序
快速排序1. 定义快速排序是指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。2. 算法步骤从数列中挑出一个元素,称为“基准”(pivot)(这里将最后一位元素作为基准元素)。定义左右两个指针,一个从左往右寻找比基准值大的元素,一个从右往左找比基准值小的元素,找到后交换其位置,直到两个指针相遇,相遇后交换当前 左(右)指针 与 基准位置元素。原创 2021-08-16 09:31:20 · 63 阅读 · 0 评论 -
16. 堆
堆由于堆的存储使用到了数组的存储二叉树的方式,所以我们先介绍二叉树的顺序存储1. 二叉树的顺序存储1.1 存储方式使用数组保存二叉树结构,即将二叉树用层序遍历方式放入数组中。一般只适合表示完全二叉树,因为非完全二叉树会有空间的浪费。这种方式的主要用法就是堆的表示。如上图,其顺序存储的结果为:1.2 数组中的下标关系通过观察上面的例子,我么可以发现父节点(parent)的数组下标=(孩子节点(child)下标-1)/2例:父节点 2 的 下标为1 ,其左孩子 4 的下标 (3-原创 2021-08-14 10:37:05 · 149 阅读 · 1 评论