数据结构
文章平均质量分 89
超级战斗王
python,golang,java,c,IOS,Android,html,云计算,大数据,深度学习,机器学习,图像识别,vue
展开
-
经典排序算法之桶排序、冒泡排序和选择排序
1.桶排序 桶排序是将待排序的数据扔到按顺序排列的桶里,如下图: 其中每个桶都有按顺序的编号(桶就是数组,编号是数组的下标),将每个数放到编号与之对应的桶里,然后再将桶里的数依次拿出来便排号了序。缺点:如果需要对100、2、0进行排序,则需要创建一个大小为101(下标从0开始,见上图)的数组,造...原创 2018-08-15 13:29:44 · 1768 阅读 · 1 评论 -
经典排序算法之插入排序和快速排序
1.插入排序 插入排序的基本操作是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。基本思想为,将待排序的数据分为两部分,一部分是有序的,另一部分的每个元素将在有序的这一部分找到合适的位置插入即可,如图所示: 时间复杂度:如果想把n个元素的序...原创 2018-08-15 17:09:20 · 9790 阅读 · 2 评论 -
经典搜索算法之深度优先搜索和广度优先搜索
1.深度优先搜索(DFS) 深度优先搜索是从一个顶点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,即尽可能的往深处走。如图所示: 假设我们需要搜索到G,则我们从A出发,A-...原创 2018-08-15 18:19:20 · 1262 阅读 · 1 评论 -
二叉树的遍历之先序遍历、中序遍历和后序遍历
例图: 1.先序遍历 先序遍历也叫做先跟遍历、前序遍历。先序遍历步骤为:访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。即根左右。 如上图1,先序遍历的序列为:ABDECF 如上图2,先序遍历的序列为:ABDGHECKFIL2.中序遍历 中序遍历也叫做中跟遍历、中序周...原创 2018-08-16 13:05:15 · 13571 阅读 · 2 评论 -
经典搜索算法之二分查找与二叉查找树
1.二分查找 二分查找也称为折半查找,它是一种效率较高的查找方法。二分查找的使用前提是线性表已经按照大小排好了序。这种方法充分利用了元素间的次序关系,采用分治策略。基本原理是:首先在有序的线性表中找到中值,将要查找的目标与中值进行比较,如果目标小于中值,则在前半部分找,如果目标小于中值,则在后半部分找;假设在前半部分找,则再与前半部分的中值相比较,如果小于中值,则在中值的前半部分找,如果大于...原创 2018-08-16 18:40:58 · 6436 阅读 · 4 评论 -
经典搜索算法之B树与B+树
1.B树 在笔者上篇文章中,我们说到二叉查找树的时间复杂度最好情况为,最差情况为。最差情况是所有的数据全部在一端时,那怎样避免出现这种情况,让二叉查找树所有查找的时间复杂度均为呢,为了达到这一目标,我们需要让二叉查找树保持平衡,不能将结点全部聚集在某一端。为了保证查找树的平衡,我们需要一些灵活性,因此在这里我们允许树中的一个结点可以保存多个数值。比如: ...原创 2018-08-17 18:30:47 · 9097 阅读 · 4 评论 -
经典搜索算法之2-3-4树与红黑树
1.2-3-4树 在笔者上篇文章中,介绍了B树和B+树,这里我所说的2-3-4树就是阶为4的B树。根据离散数学的图论相关知识,可以证明2-3-4树和红黑树是等价的。对于m阶(m指的结点的最大分支数)B树,其结点的值的个数n:1<=n<m。因此,对于2-3-4树,其结点的值的个数1<=n<4,如下图所示: 2.红黑树...原创 2018-08-28 12:03:49 · 1054 阅读 · 0 评论