![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 78
哪里都有好故事
不想进BAT的程序员不是一个好司机
展开
-
快速排序java实现
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序在笔试面试中也是高频考点。 假设我们要对7,4,5,6,1,8,9,3,2这几个数进行排序,我们首先要找一个基准数原创 2017-12-05 21:04:46 · 198 阅读 · 0 评论 -
二叉树的前中后遍历(递归版本)
先序遍历:根左右 中序遍历:左根右 后序遍历:左右根//定义二叉树public class Node { int val; Node left; Node right; Node(int data) { this.val = data;//先序遍历public static void preOrderRecur(Node head) { ...原创 2018-04-13 15:25:32 · 124 阅读 · 0 评论 -
二叉树前中后遍历(非递归版本)
二叉树前中后遍历非递归版本 先序遍历: 首先1进栈 判断栈不为空,1出栈,并且右孩子先进栈,然后左孩子进栈 栈顶元素2出栈,并且2的右孩子5和左孩子4依次进栈 然后4出栈,4没有左右孩子,所以不存在进栈元素 5出栈 3出栈,3的右孩子7和左孩子6进栈 6出栈 7出栈 栈为空结束 出栈顺序: 1 2 4 5 3 6 7//先序遍历public sta...原创 2018-04-13 17:15:02 · 112 阅读 · 0 评论 -
HashMap和Hashtable
HashMap与Hashtable的区别一.类继承体系 HashMap继承自抽象类AbstractMap,而Hashtable继承自抽象类Dictionary。其中Dictionary已经被放弃,HashTable比HashMap多了两个公开方法,一个是elements(),另一个是contains()。 二.Null Key 与 Null Value ...原创 2018-05-09 22:10:03 · 448 阅读 · 0 评论 -
HashMap底层实现原理
JDK1.6,1.7中,HashMap采用数组+链表实现,用链表处理冲突,同一hash值的链表都存储在一个链表里。当位于同一数组中的元素较多时,通过Key值依次查找的效率较低。当有大量元素都存放到同一个数组元素时,这个数组元素下有一条长长的链表,假设链表有N个元素,遍历的时间复杂度为O(n),完全失去了它的优势。 JDK1.8中,HashMap采用数组+链表+红黑树(查找时间复杂度为O(logn...原创 2018-04-25 21:29:45 · 194 阅读 · 0 评论 -
Hash冲突解决方法
Hash碰撞冲突当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技术中的两个重要问题。方法1.开放地址法 开放地址法公式::H=(H(key)+di) MOD m i=1,2,…,k(k<...原创 2018-08-19 16:49:56 · 261 阅读 · 0 评论