
数据结构
❀架构师花花
这个作者很懒,什么都没留下…
展开
-
红黑树-1
写在前面当在10亿数据中只需要进行10几次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑...转载 2020-02-08 21:35:18 · 557 阅读 · 0 评论 -
HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录 一、什么是哈希表 二、Ha...转载 2019-03-29 12:58:40 · 120 阅读 · 0 评论 -
Java数据结构和算法(八)——递归
目录1、递归的定义 2、求一个数的阶乘:n! 3、递归的二分查找 4、分治算法 5、汉诺塔问题 5、归并排序 6、消除递归 递归和栈 7、递归的有趣应用 ①、求一个数的乘方 ②、背包问题 ③、组合:选择一支队伍 8、总结 记得小时候经常讲的一个故事:从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,一天,老和尚给小和尚讲了一个故...转载 2018-12-12 13:55:09 · 185 阅读 · 0 评论 -
Java数据结构和算法(七)——链表
目录1、链表(Linked List) 2、单向链表(Single-Linked List) ①、单向链表的具体实现 ②、用单向链表实现栈 4、双端链表 ①、双端链表的具体实现 ②、用双端链表实现队列 5、抽象数据类型(ADT) 6、有序链表 7、有序链表和无序数组组合排序 8、双向链表 9、总结 前面博客我们在讲解数组中,知道数组作...原创 2018-12-12 13:53:39 · 217 阅读 · 0 评论 -
Java数据结构和算法(六)——前缀、中缀、后缀表达式
目录1、人如何解析算术表达式 2、计算机如何解析算术表达式 3、后缀表达式 ①、如何将中缀表达式转换为后缀表达式? ②、计算机如何实现后缀表达式的运算? 4、前缀表达式 ①、如何将中缀表达式转换为前缀表达式? ②、计算机如何实现前缀表达式的运算? 前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序...转载 2018-12-12 13:51:45 · 243 阅读 · 0 评论 -
Java数据结构和算法(五)——队列
目录1、队列的基本概念 2、Java模拟单向队列实现 3、双端队列 4、优先级队列 5、总结 前面一篇博客我们讲解了并不像数组一样完全作为存储数据功能,而是作为构思算法的辅助工具的数据结构——栈,本篇博客我们介绍另外一个这样的工具——队列。栈是后进先出,而队列刚好相反,是先进先出。回到顶部1、队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只...转载 2018-12-12 13:50:01 · 151 阅读 · 0 评论 -
Java数据结构和算法(四)——栈
目录1、栈的基本概念 2、Java模拟简单的顺序栈实现 3、增强功能版栈 4、利用栈实现字符串逆序 5、利用栈判断分隔符是否匹配 6、总结 前面我们讲解了数组,数组更多的是用来进行数据的存储,纯粹用来存储数据的数据结构,我们期望的是插入、删除和查找性能都比较好。对于无序数组,插入快,但是删除和查找都很慢,为了解决这些问题,后面我们会讲解比如二叉树、哈希表的数据结构。...转载 2018-12-12 13:48:50 · 190 阅读 · 0 评论 -
Java数据结构和算法(三)——冒泡、选择、插入排序算法
目录1、冒泡排序 2、选择排序 3、插入排序 4、总结 上一篇博客我们实现的数组结构是无序的,也就是纯粹按照插入顺序进行排列,那么如何进行元素排序,本篇博客我们介绍几种简单的排序算法。回到顶部1、冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。 冒...转载 2018-12-12 13:42:01 · 151 阅读 · 0 评论 -
Java数据结构和算法(二)——数组
目录1、Java数组介绍 2、用类封装数组实现数据结构 3、分析数组的局限性 4、总结 上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍。本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要的数据结构,当然每种语言对数组的实现和处理也不相同,但是本质是都是用来存放数据的的结构,这...转载 2018-12-12 13:38:51 · 176 阅读 · 0 评论 -
Java数据结构和算法(一)——简介
目录1、数据结构 一、数据结构的基本功能 二、常用的数据结构 2、算法 一、算法的五个特征 二、算法的设计原则 3、总结 本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子。 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱。一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数据结构和算法的人...转载 2018-12-12 13:37:05 · 194 阅读 · 1 评论 -
面试-8种 常用数据结构总结
1976年,一个瑞士计算机科学家写一本书《Algorithms + Data Structures = Programs》。即:算法 + 数据结构 = 程序。40多年过去了,这个等式依然成立。很多代码面试题都要求候选者深入理解数据结构,不管你来自大学计算机专业还是编程培训机构,也不管你有多少年编程经验。有时面试题会直接提到数据结构,比如“给我实现一个二叉树”,然而有时则不那么明显,比如“统计一...转载 2018-12-12 11:52:54 · 3187 阅读 · 0 评论 -
数组与链表
链表与数组是最基础的数据的结构,堆栈.队列等逻辑上的数据结构都是基于这两种数据结构实现的。链表与数组的区别在于数组的内存分配是连续的(即数组的每一项内存地址是连续的),而链表则可能连续也可能不连续。从性能上看,数组支持随机存储,查询速度相对于链表更快,但每一次插入或删除都要将操作数组项后面的元素逐一向前移动一位,效率为O(n)。而链表的查询每次都要从表头开始逐一查询,查询效率为O(n...原创 2018-02-27 14:57:53 · 256 阅读 · 0 评论 -
ArrayList和LinkedList的区别
sierrajuanArrayList和LinkedList的区别ArrayList和Vector使用了数组的实现,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加,删除,插入新的元素或者数据的扩展和重定向。LinkedList使用了循环双向链表数据结构。与基于数组ArrayList相比,这是两种截然不同的实现技术,这也决定了它们将适用于完全不同的工作...转载 2018-12-19 15:16:01 · 110 阅读 · 0 评论 -
数据结构与算法系列 目录
最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"和"Java"这三种语言的实现;实现语言虽不同,但原理如出一辙。因此,读者在了解和学习的过程中,择其一即可!下面是整理数据数据和算法的目录表,对于每一种按照C/C++/Java进行了划分,方便查阅。若文章有错误或纰漏,请不吝指正。谢谢! 数据结构和算法目录表 CC++Java线性结构1. 数组...转载 2018-05-22 15:02:53 · 156 阅读 · 0 评论