![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
horseber
飞是小李飞刀的飞,刀是小李飞刀的刀
展开
-
Java数据结构:跳跃链表
1、跳跃链表 用某种数据结构来维护一组有序的数据的列表,尽可能在插入、删除、查找等操作上能够尽可能的快速。 数组:使用数组存储的话,采用二分法可以在 O(logn) 的时间里找到指定的元素,在进行插入和删除则时间复杂度为 O(n) 链表:使用链表存储的话,就插入、删除动作而言,所需的时间复杂度为 O(1) ,加上查找所需的时间复杂度为O(n),故插入、删除所需的总的时间复杂度为O(n)。 ...原创 2019-08-23 18:02:43 · 291 阅读 · 0 评论 -
Java数据结构:链表
1、链表定义: 链表通过指针将不连续的内存块串起来,构成的一种数据结构。单向链表、双向链表,双端链表、单向循环、双向循环、跳跃链表等原理也都是基于指针将不连续的内存快串起来。只是指针指向复杂度不一样,提供的各种的API而已。 /** * 单链表的表示方式: */ class Node { Object element; //节点数据信息:数据域 Node next; //下...原创 2019-08-22 12:51:44 · 110 阅读 · 0 评论 -
Java数据结构:数组
1、数组定义: 数组是java语言中最基本的数据存储结构。数组是一块连续的内存空间,用于存储相同类型的数据。基本上掌握的数组的这个定义里包含的特点。也就掌握的了数组 (1)连续的内存空间:因为连续,导致内存空间利用率差。若声明一个数组,大小为10m的连续的一块空间 byte[] arr=new byte[1024*10] 。即使这时候内存空间大于10m,但腾不出一块连续内存空间(存在内存碎片)...原创 2019-08-17 07:26:24 · 257 阅读 · 0 评论 -
Java数据结构:队列(2)
1、双端队列(Deque) deque 特殊之处在于添加和删除项是非限制性的。可以从任一端添加和删除数据。这种混合线性结构提供了单个数据结构中的栈和队列的所有能力。 2、循环队列 用数组来实现队列的时候,利用头尾指针避免了出队时数据的搬移,只是再在 tail==数组长度时,会有数据搬移操作,但数据搬移操作还是会影响到性能。解决方案就是循环队列。 指定队列固定大小,通过头尾指针控制元素...原创 2019-08-22 07:08:45 · 77 阅读 · 0 评论 -
Java数据结构:队列(1)
1、队列 栈是一种先进后出线性数据结构,数据的插入和删除只能在一端操作。 队列是一种先进先出线性数据结构,队尾一端插入数据,队头一端删除数据。 2、单向队列的实现: 与基于数组的栈不同的是,基于数组实现的队列在出队操作时,相当于删除数组下标为 0 的数据,要搬移整个队列中的数据。 /** * description: 基于数组实现队列 * date: 2019/8/21 ...原创 2019-08-21 17:45:06 · 133 阅读 · 0 评论 -
Java数据结构:栈
1、栈 栈是一种先进后出线性数据结构,数据的插入和删除只能在一端操作。 2、基于数组实现栈(顺序栈) 只要抓住先进后出的特点,剩下的就是基于数据的操作。 基于链表实现的栈(链式栈)与顺序栈同理,就是无非控制链表节点先进后出。链式栈的大小不受限,但要存储 next 指针,内存消耗相对较多。 /** * description: 基于数组实现栈 * date: 2019/8/21 *...原创 2019-08-21 11:51:04 · 125 阅读 · 0 评论 -
Java数据结构:散列表
1、散列函数 将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法。如MD5,就是一种被广泛使用的密码散列函数。 MD5(12)=C20AD4D76FE97759AA27A0C99BFF6710 MD5(123)=202CB962AC59075B964B07152D234B70 2、散列表 散列表(Hash table,也叫哈希表),就是通过散列函数将关键码...原创 2019-08-20 21:46:01 · 384 阅读 · 0 评论