随笔分类 - 数据结构
摘要:大家好,我是老三,一个刷不动算法的程序员。排序算法相关题目尽管在力扣中不是很多,但是面试中动不动要手撕一下。接下来,我们看一下十大基本排序, 排序基础 排序算法的稳定性 什么是排序算法的稳定性呢? 当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不惟一[1]。 在待排序的文件中,若存在
阅读全文
摘要:大家好,我是老三,最近裸辞了,在面试。 前两天一个面试,只面了十分钟就结束了—— 事情是这样的: 面试官:你能说说HashMap的数据结构吗? 老三:数组+链表+红黑树,阿巴阿巴…… 面试官:那你说说红黑树的查找复杂度是多少? 老三:O(logn)。 面试官:那这个复杂度的底数是多少? 老三:时间复
阅读全文
摘要:@ 查找是各种软件系统中经常用到的操作。查找的效率非常重要,大型的系统尤其如此。 一、查找的基本概念 首先来看一些查找的基本概念和术语。 查找表 查找表是由同一类型的数据元素(或记录)构成的集合。由于 “集合” 中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵活的数据结构,可以利用其他的
阅读全文
摘要:@ 图是一种比线性表和树更为复杂的数据结构。在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每一层中的数据元素可能和下一层中的多个元素(即其孩子结点)相关,但只能和上一层中一个元素(即其双亲结点)相关; 而在图结构中
阅读全文
摘要:树结构是一类重要的非线性数据结构。直观来看,树是以分支关系定义的层次结构。树结构在客观世界广泛存在,如人类社会的族谱和各种社会组织机构都可用树来形象表示。 树在计算机领域中也得到广泛应用,尤以二叉树最为常用。如在操作系统中,用树来表示文件目录的组织结构。在编译系统中,用树来表示源程序的语法结构。在数
阅读全文
摘要:计算机上的非数值处理的对象大部分是字符串数据, 字符串一般简称为串。串是一种特殊的 线性表, 其特殊性体现在数据元素是一个字符, 也就是说, 串是一种内容受限的线性表。 1、串的定义 串(string)(或字符串)是由零个或多个字符组成的有限序列,其中每个字符都来自某个字符表( Alphabet)
阅读全文
摘要:一、数组 1、数组的定义 数组是由类型相同的数据元素构成的有序集合每个元素称为数组元素,每个元素受 n(n>=1) 个线性关系的约束,每个元素在 n 个线性关系中的序号i1, i2, …,in 称为该元素的下标,可以通过下标访问该数据元素。 数组分为一维数组和多维数组。 数组一旦被定义, 它的维数和
阅读全文
摘要:@ 1、队列的定义和特点 和上一篇的栈相反,队列(queue)是一种先进先出(First In First Out, FIFO)的线性表。 它只允许在表的一端进行插入,而在另一端删除元素。这和日常生活中的排队是一致的,最早进入队列的元素最早离开。 在队列中,允许插入的一端称为队尾(rear), 允许
阅读全文
摘要:@ 1、栈的定义和特点 栈(Stack)又称堆栈, 是限制在表的一端进行插入和删除运算的线性表。 如果要拿一个东西对比,羽毛球筒比较合适。 栈遵循后进先出( Last-in-first-out,LIFO)的原则。 比如上面的羽毛球筒,只能将最顶端的羽毛球移出,也只能将新的羽毛球放到最顶端——这两种操
阅读全文
摘要:@ 准备 LinkedList是基于双向链表数据结构实现的Java集合(jdk1.8以前基于双向循环链表),在阅读源码之前,有必要简单了解一下链表。 先了解一下链表的概念:链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循
阅读全文
摘要:@ 1、线性表的概念 线性表是最常见也是最简单的一种数据结构。简言之, 线性表是n个数据元素的有限序列。 其一般描述为: A={a1,a2,……an) 一个数据元素通常包含多个数据项, 此时每个数据元素称为记录, 含有大量的记录的线性表称为文件。 例如十二生肖,就是一个线性表: 在稍微复杂的线性表中
阅读全文
摘要:@ 转眼大学毕业已经一年多,计算机专业四大基础课——《数据结构》、《计算机网络》、《计算机组成原理》、《操作系统》,当时学的实在马虎,到现在已经快要还完了。“基础不牢,地动山摇”,曾经偷过的懒,现在都得给它补回去。 图一:数据结构概览 1、数据结构 1.1、数据结构的起源 1968 年, 美国的高德
阅读全文