
算法与数据结构
Mute4ll
这个作者很懒,什么都没留下…
展开
-
红黑树原理及其代码实现
红黑树简介 红黑树(Red-Black tree)也是一种自平衡的二叉查找树,它是1972年由 Rudolf Bayer发明的,而“红黑树”的名字是由Leo J. Guibas 和 Robert Sedgewick于1978年首次提出。 和其他平衡二叉查找树类似,红黑树也可以在O (log n)的时间复杂度内完成查找、插入和删除操作。红黑树相比于AVL,牺牲了部分平衡性以在插入、删除操作时减少旋转操作,整体性能优于AVL,也正因如此,C++ STL中的map就是用红黑树实现的。 红黑树和其他平衡二叉查找树原创 2020-07-10 21:36:30 · 312 阅读 · 0 评论 -
快速排序的基础与优化
基础的快速排序 先从最基础的快速排序思想开始,选中左边第一个数为基点,将小于该基点的节点放到左边,大于基点的节点放到右边,基点放在中间,然后对两边的子序列递归调用。 代码实现 void quick_sort_v1(int *arr, int l, int r) { if (l >= r) return ; int x = l, y = r, z = arr[l]; while (x < y) { while (x < y &&am原创 2020-07-10 17:26:11 · 464 阅读 · 0 评论 -
AVL树原理与实现
数据结构 数据结构 = 结构定义 + 结构操作 树形结构: 节点:集合 边:关系 二叉排序树 性质 1、左子树 < 根结点 2、右子树 > 根结点 用途 解决与排名相关的检索需求 插入操作 从根结点出发,比较待插入节点与当前节点的大小,若待插入节点小于当前节点则当前节点转移到其左孩子,否则转移到右孩子。直到找到一个空闲的叶节点位置插入。 删除操作 删除出度为0的节点: 直接删除即可 删除出度为1的节点: 该结点的父节点直接连接到该结点的子节点,即前后节点连接 删除出度为原创 2020-07-08 12:50:43 · 218 阅读 · 0 评论