amoscykl的博客

凡有成者,必务于实。凡有所学,皆成性格。

排序:
默认
按更新时间
按访问量
RSS订阅

经典排序算法实现和总结

算法分类 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 算法复杂...

2018-12-22 00:26:25

阅读数 100

评论数 0

动画: 什么是散列表? (Hash Table 哈希表)

本文来自算法爱好者! (部分详细介绍) 散列表 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组...

2019-02-11 22:30:26

阅读数 88

评论数 0

拓扑排序

原文地址:http://blog.csdn.net/lisonglisonglisong/article/details/45543451 一、什么是拓扑排序 在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph...

2018-11-05 12:30:42

阅读数 1964

评论数 0

红黑树的原理分析与(C++)实现: 模板类、插入算法双红修正、删除算法双黑修正 (C++)

红黑树 1.概述 定义 由红、黑两色节点组成的二叉搜索树若满足以下条件,即为红黑树 (red-black tree):    (1) 树根始终为黑色    (2) 外部节点均为黑色    (3) 其余节点若为红色,则其孩子节点必为黑色    (4) 从任一外部节点到根节点的沿途,黑节点的数...

2018-08-12 17:07:10

阅读数 353

评论数 0

多路平衡搜索树—B-树的原理实现和分析:模板类,查找、插入、删除算法以及上溢下溢处理 (C++)

B-树   1.多路平衡查找 多路搜索树 具体地如图8.10所示,比如可以两层为间隔,将各节点与其左、右孩子合并为“大节点”,每个“大节点”拥有四个分支,故称作四路搜索树。一般地,以k层为间隔如此重组,可将二叉搜索树转化为等价的2^k路搜索树,统称多路搜索树(multi-way sea...

2018-08-11 23:53:20

阅读数 248

评论数 0

伸展树的实现与分析:伸展算法的实现,查找、插入、删除算法的实现 (C++)

伸展树(splay tree) 通常在任意数据结构的生命期内,不仅执行不同操作的概率往往极不均衡,而且各操作之间具有极强的相关性,并在整体上多呈现出极强的规律性。其中最为典型的,就是所谓的“数据局部性”(data locality),这包括两个方面的含义:           1)刚刚被访问过...

2018-08-11 19:00:34

阅读数 396

评论数 0

平衡二叉搜索树:AVL树的实现与分析 以及 统一重平衡算法 (C++)

平衡二叉搜索树 既然二叉搜索树的性能主要取决于高度,故在节点数目固定的前提下,应尽可能地降低高度。 相应地,应尽可能地使兄弟子树的高度彼此接近,即全树尽可能地平衡。   等价变换 等价二叉搜索树:若两棵二叉搜索树的中序遍历序列相同,则称它们彼此等价;反之亦然。   旋转调整 ...

2018-08-11 16:19:05

阅读数 344

评论数 1

二叉搜索树:BST模板类、查找、插入、删除操作 (C++)

二叉搜索树   1.顺序性 任一节点r的左(右)子树,所有节点均不大于(小于)r   2.中序遍历序列 对二叉搜索树做一次中序遍历,即可将该树转换为一个线性序列,且该序列中的节点严格按照其大小次序排列。 任何一棵二叉树是二叉搜索树,当且仅当其中序遍历序列单调非降   3....

2018-08-11 15:59:01

阅读数 509

评论数 0

数据结构(C++)——图的遍历算法:广度优先搜索、深度优先搜索、优先级搜索算法

图的遍历算法 图的遍历都可以理解为,将非线性结构转化为半线性结构的过程。经遍历而确定的边类型中,最重要的一类即所谓的树边,它们与所有顶点共同构成了原图的一棵支撑树(森林),称作遍历树(traversal tree)。     广度优先搜索(BFS) 广度优先搜索(breadth-firs...

2018-08-03 22:53:09

阅读数 1357

评论数 0

数据结构(C++)——图:基于邻接矩阵实现的图结构

抽象数据类型 操作接口:图支持的操作接口分为边和顶点两类   Graph模板类 typedef enum { UNDISCOVERED, DISCOVERED, VISITED } VStatus; //顶点状态 typedef enum { UNDETERMINED, TREE, ...

2018-08-03 22:46:09

阅读数 552

评论数 0

数据结构(C++)——二叉树的遍历:先序,后序,中序,层次遍历

递归式遍历   1.先序遍历 template <typename T, typename VST> //元素类型、操作器 void travPre_R(BinNodePosi(T) x, VST& visit...

2018-08-02 23:31:17

阅读数 773

评论数 0

数据结构(C++)——二叉树 BinTree

二叉树的实现   二叉树节点—BinNode模板类 #define BinNodePosi(T) BinNode<T>* //节点位置 #define stature(p) ((p) ? (p).height: -1) //节点高度 type...

2018-08-02 22:58:41

阅读数 263

评论数 0

栈(Stack)的应用—试探回溯法:八皇后问题、迷宫寻径

栈的应用   试探回溯法 1.八皇后问题 皇后类 struct Queen { //皇后类 int x, y; //坐标 Queen (int xx = 0, int yy = 0 ) : x(xx), y(yy) {}; bool operator==(...

2018-08-01 15:29:16

阅读数 245

评论数 0

栈(Stack)和队列(queue)及其应用(C++)

栈 栈操作实例:   栈可试作序列的特例,将栈作为向量的派生类 #include "../Vector/Vector.h" //以向量为基类,派生出栈模板类 template <typename T>...

2018-08-01 15:22:20

阅读数 176

评论数 0

列表—List 底层实现

列表的元素构成一个线性逻辑次序,元素的物理地址可以任意。 链表(linked list)是一种典型的动态存储结构,其中的数据分散为一系列节点单位。节点之间通过指针相互索引和访问。为了引进新节点或删除原有节点,只需在局部,调整少量相关节点之间的指针。这意味着,采用动态存储策略,可以大大降低动态操作...

2018-07-06 00:18:39

阅读数 2954

评论数 0

向量—vector 底层实现

最为基本的线性结构统称为序列,根据其中数据项的逻辑次序与其物理存储地址的对应关系不同,又可进一步地将序列区分为向量(vector)和列表(list)。 在向量中,所有数据项的物理存放位置与其逻辑次序完全吻合,此时的逻辑次序也称为秩(rank)。 在列表中,逻辑上相邻的数据项在物理上未必相邻,而...

2018-07-04 00:05:42

阅读数 118

评论数 0

递归——线性递归与二分递归

递归线性递归例子1:数组求和int sum( int A[], int n) { //数组求和算法:线性递归版 if ( 1 > n ) //平凡情况,递归基 return 0; //直接计算 else //一般情况 return sum(A, n-1...

2018-06-29 23:35:57

阅读数 871

评论数 0

提示
确定要删除当前文章?
取消 删除