1.2k 1 分钟

# 图 在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。 # 什么是图 阶(Order) - 图 G 中点集 V 的大小称作图 G 的阶。 子图(Sub-Graph) - 当图 G'=(V',E') 其中 V‘包含于 V,E’包含于 E,则 G' 称作图 G=(V,E) 的子图。每个图都是本身的子图。 生成子图(Spanning Sub-Graph) - 指满足条件 V (G') = V (G) 的 G 的子图 G'。 导出子图(Induced...
3.4k 3 分钟

# 哈希表 哈希表 是一种使用 哈希函数 组织数据,以支持快速插入和搜索的数据结构。 有两种不同类型的哈希表:哈希集合 和 哈希映射。 哈希集合 是集合数据结构的实现之一,用于存储非重复值。 哈希映射 是映射 数据结构的实现之一,用于存储 (key, value) 键值对。 # 什么是哈希表 哈希表的英文叫 “Hash Table”,我们平时也叫它 “散列表” 或者 “Hash 表”。 哈希表 是一种使用 哈希函数 组织数据,以支持快速插入和搜索的数据结构。 有两种不同类型的哈希表:哈希集合 和 哈希映射。 哈希集合 是集合数据结构的实现之一,用于存储非重复值。 哈希映射 是映射...
321 1 分钟

# 数据结构和算法指南 # 1. 为什么学习数据结构和算法 为了找到一份好工作:大厂面试喜欢考算法 更深入了解流行技术的设计思想:数据结构和算法是计算机基础学科,很多框架、中间、底层系统设的设计,都借鉴了其思想。因此,掌握数据结构和算法,有利于更深入了解这些技术的设计思想。 提升个人的编程水平 不满足于做业务狗,拓展性能思考的视角 # 2....
4.4k 4 分钟

# 线性表的查找 # 查找简介 # 什么是查找? 查找是根据给定的某个值,在表中确定一个关键字的值等于给定值的记录或数据元素。 # 查找算法的分类 若在查找的同时对表记录做修改操作(如插入和删除),则相应的表称之为动态查找表; 否则,称之为静态查找表。 此外,如果查找的全过程都在内存中进行,称之为内查找; 反之,如果查找过程中需要访问外存,称之为外查找。 # 查找算法性能比较的标准 —— 平均查找长度 ASL(Average Search...
748 1 分钟

# 堆 # 什么是堆? 堆(Heap)是一个可以被看成近似完全二叉树的数组。 堆是一个完全二叉树。完全二叉树要求,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。 堆可以分为大顶堆和小顶堆。 对于每个节点的值都大于等于子树中每个节点值的堆,叫作 “大顶堆”。 对于每个节点的值都小于等于子树中每个节点值的堆,叫作 “小顶堆”。 #...
12k 11 分钟

V # 如何优雅的玩转 Git # Git 简介 # Git 是什么 Git 是一个开源的分布式版本控制系统。 Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方式。 从概念上来说,其它大部分系统以文件变更列表的方式存储信息,而 Git 是把数据看作是对小型文件系统的一系列快照。 # 什么是版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 # 集中化的版本控制系统 介绍分布式版本控制系统前,有必要先了解一下传统的集中式版本控制系统。 集中化的版本控制系统,诸如 CVS,Subversion...
13k 12 分钟

# 线性表的排序 📦 本文已归档到:「blog」 🔁 本文中的示例代码已归档到:「algorithm-tutorial」 # 冒泡排序 # 要点 冒泡排序是一种交换排序。 什么是交换排序呢? 交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。 # 算法思想 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢 “浮” 到数列的顶端,故名。 假设有一个大小为 N...
1.4k 1 分钟

# 栈和队列 队列和栈都是操作受限的线性表:前者先进先出,后者先进后出。 # 栈 # 栈是什么 在 LIFO (后进先出) 数据结构中,将首先处理添加到队列中的最新元素。 栈是一个 LIFO (后进先出) 数据结构。栈是一种 “操作受限” 的线性表,只允许在一端插入和删除数据。通常,插入操作在栈中被称作入栈 push 。与队列类似,总是在堆栈的末尾添加一个新元素。但是,删除操作,退栈 pop ,将始终删除队列中相对于它的最后一个元素。 当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,我们就应该首选 “栈”...