![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
编程基础之算法与数据结构
文章平均质量分 96
常用数据结构和算法
码农先锋
这个作者很懒,什么都没留下…
展开
-
数据结构之线性表
文章目录概述特性分类顺序表定义特点实现链表定义特点实现概述线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。特性集合中必存在唯一的一个“第一元素”。集合中必存在唯一的一个 “最后元素” 。除最后一个元素之外,均有唯一的后继(后件)。除第一个元素之外,均有唯一的前驱(前件)。分类...原创 2019-07-05 14:02:10 · 328 阅读 · 0 评论 -
数据结构之图
文章目录定义图的表示图的遍历深度优先搜索(DFS)广度优先搜索(BFS)最小生成树定义图(Graph)是由顶点的有穷非空集合和顶点之间的边组成,通常表示为:G(V,E),其中,G 表示一个图,V 是图 G 中顶点的集合,E 是图 G 中边的集合。图通常有个固定的形状,这是由物理或抽象的问题所决定的。比如图中节点表示城市,而边可能表示城市间的班机航线。如下图是美国加利福利亚简化的高速公路网:...原创 2019-08-21 13:28:21 · 483 阅读 · 0 评论 -
数据结构之八大排序算法
文章目录概述性能对比插入排序直接插入排序希尔排序选择排序直接选择排序堆排序交换排序冒泡排序快速排序归并排序基数排序概述排序就是把集合中的元素按照一定的次序排序在一起。一般来说有升序排列和降序排列2种排序,在算法中有8中基本排序:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、基数排序、堆排序。性能对比各排序算法时间复杂度:复杂度函数时间大小比较 :插入排序直接插入排序...原创 2019-08-25 09:57:17 · 379 阅读 · 0 评论 -
数据结构之B树、B-树、B+树、B*树
文章目录概述B树B树的性质B树的特点B+树B+ 树的特点B* 树概述B/B+/B*树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树相比,在相同的的节点的情况下,一颗B树的高度远远小于红黑树的高度.B树上操作的时间通常由存取磁盘的时间和CPU计算时间这两部分构成,而CPU的速度非常快,所以B树的操作效率取决于访问磁盘的次数,关键字总数相同的情...原创 2019-08-01 15:03:26 · 229 阅读 · 0 评论 -
数据结构之红黑树
文章目录概述性质自平衡策略红黑树的操作插入操作删除操作红黑树的删除情景:删除操作后的平衡:红黑树实现概述在之前的博客《数据结构之二叉树》我提到过二叉排序树,然而二叉排序树的性能取决于二叉树是否平衡:最好的情况是 O(logn),存在于完全二叉排序树情况下,其访问性能近似于折半查找;最差时候会是 O(n),比如插入的元素是有序的,生成的二叉排序树就是一个链表,这种情况下,需要遍历全部元素才...原创 2019-08-01 01:10:53 · 524 阅读 · 0 评论 -
数据结构之哈希表
文章目录定义散列函数碰撞的解决开放地址法线性探测法二次探测再哈希法链地址法哈希表实现定义哈希表的思想是:用一个与集合规模差不多大的数组来存储这个集合,将数据元素的关键字映射到数组的下标,这个映射称为“散列函数”,数组称为“散列表”。查找时,根据被查找的关键字找到存储数据元素的地址,从而获取数据元素。哈希表是唯一的专用于集合的数据结构。可以以常量的平均时间实现插入、删除和查找。顺序查找的时...原创 2019-07-30 14:42:02 · 270 阅读 · 0 评论 -
数据结构之二叉树
文章目录定义类型相关概念二叉树的存储结构顺序存储链式存储二叉树的遍历二叉树的实现定义在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。类型1. 满二叉树除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。满二叉树结点数为2k−12^k-...原创 2019-07-12 16:24:12 · 223 阅读 · 0 评论 -
数据结构之堆和优先队列
文章目录堆定义堆与二叉搜索树堆的操作插入删除堆的特性堆的实现优先队列堆定义堆通常是一个可以被看做一棵树的数组对象,所有它没有使用父指针或者子指针。二叉堆是一棵完全二叉树。堆分为两种:最大堆和最小堆,两者的差别在于节点的排序方式。最大堆:父节点的值比每一个子节点的值都要大。子树也是最大堆。最小堆:父节点的值比每一个子节点的值都要小。子树也是最小堆堆与二叉搜索树节点的顺序。在二叉...原创 2019-07-23 15:51:25 · 196 阅读 · 0 评论 -
数据结构之栈和队列
文章目录栈栈的实现队列队列的实现栈栈是比较常用的数据结构。栈的应用非常的广泛,比如说,递归函数的实现就是借助于栈保存相关的数据。操作系统中每个线程也会使用栈来保存函数调用涉及到的一些参数和其他变量等。栈最大的一个特点就是先进后出(First In Last Out)。栈的实现栈的实现通常有两种方式,即数组和链表。这里采用数组的方式来实现。定义public class MyStack...原创 2019-07-11 13:43:27 · 157 阅读 · 0 评论 -
数据结构之跳跃表
文章目录引入性质实现原理代码实现跳跃链表又称“跳表”,是一种随机化数据结构,基于并联的链表,其效率可比拟于二叉查找树(对于大多数操作需要O(log n)平均时间),并且对并发算法友好。引入在单链表中查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过二分的方式缩减时间复杂度。 如下图:但是如果我们在有序的单链表上加入多层索引,如下图,此时它的查找效率就类似于二分查找...原创 2019-08-18 11:32:41 · 240 阅读 · 0 评论