
DataStruct
文章平均质量分 82
SixDayCoder
渣校的渣渣
展开
-
线索二叉树
线索二叉树线索二叉树是一种特殊的树状数据结构。实际上就是对寻常的二叉树进行了“线索化”。顾名思义,在线索化后,普通的二叉树变成了“线”,实际上,可以理解为变成了双向链表。 线索二叉树的线索化分为中序线索化,前序线索化,后序线索化。 这里只介绍中序线索化。 “A binary tree is threaded by making all right child pointers that wo原创 2015-05-12 19:48:08 · 605 阅读 · 0 评论 -
基数排序
基数排序简介基数排序不同于快排、堆排等常规比较排序,属于非比较排序(我更喜欢叫它分发-收集排序)。 它效率很高,平均时间复杂度为O(rn),系数r的大小取决于基数(radix)的选择。这个时间复杂度是近似线性的!不过也有一定的局限性,只适用于正整数或者一定限制的字符串,而且内存花销比较大。正整数基数排序基数排序,排序时有不同的基准字,每一个基准字都有自己的优先性。 举一个例子 对于数组a =原创 2015-07-16 08:59:25 · 1479 阅读 · 0 评论 -
并查集
不相交集合(Disjoint-Set)不相交集合,顾名思义就是讲一些元素划分为不相交的几个集合。 其中每个集合都有一个”代表”作为该集合的标识符,如果这个集合可以表示成一棵树,那么集合的”代表”就是所有节点的公共祖先——树根。 实现不相交集合的最为常用的数据结构就是并查集。并查集并查集是典型的不相交集合的树形数据结构,提供了三种基本操作。Make_Set(x): 建立一个新的集合,集合的唯原创 2015-04-14 17:57:38 · 1235 阅读 · 0 评论 -
快速排序(递归版)
快速排序是最经典的排序算法,它用途广泛,效率很高,也经常被拿来检验coder的基本功底。此篇作为快排的学习笔记。快排的基本思想快速排序是典型的分治算法,理解了快排的思想,很容易写出递归版的代码。快排分以下三个步骤.Choose a pivot value. 选择一个元素作为轴(pivot),这里我一般选择数组的中间值作为轴。Partition.将当前数组划分。划分遵循这样的规则,所有小于轴的元素原创 2015-07-14 16:20:12 · 4018 阅读 · 0 评论