【数据结构】
文章平均质量分 80
Brand__New
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【二叉排序树(3)】
代码篇: #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 typedef int Status; /* 二叉树的二叉链表结点结构定义 */ typedef struct BiTNode{ /* 结点结构 */ int data;原创 2014-04-25 15:11:01 · 590 阅读 · 0 评论 -
【字符 BF 和 KMP算法】
KMP算法是一种改进的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。 在介绍KMP算法之前,先介绍一下BF算法。 一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和原创 2014-04-25 10:20:31 · 555 阅读 · 0 评论 -
【哈希表(散列表)】
以 散列函数和处理碰撞的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象”作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址。 若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就原创 2014-04-25 17:48:59 · 906 阅读 · 0 评论 -
【二叉排序树(1)】
二叉排序树又称为二叉查找树,它是一种特殊结构的二叉树,其定义为:二叉树排序树或者是一棵空树,或者是具有如下性质的二叉树: (1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值; (2)若它的右子树非空,则右子树上所有结点的值均大于根结点的值; (3)它的左右子树也分别为二叉排序树。 这是一个递归定义。由定义可以得出二叉排序树的一个重要性质原创 2014-04-25 09:22:49 · 745 阅读 · 0 评论 -
【二叉排序树 (2)】
【进阶篇】 二叉排序树通常采用二叉链表作为存储结构。中序遍历二叉排序树可得到一个依据关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程即是对无序序列进行排序的过程。每次插入的新的结点都是二叉排序树上新的叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的指针,由空变为非空即可。搜索、插入、删除的时间复杂度等于树高,期望O(logn),最坏O原创 2014-04-25 09:35:27 · 910 阅读 · 0 评论 -
【堆与堆排序】
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。 当父结点的键值总是大于或等于任何一个子节原创 2014-04-26 19:43:50 · 569 阅读 · 0 评论 -
【STL 堆 】
一.heap 在STL中,priority_queue(优先权队列)的底层机制是最大堆,因此有必要先来了解一下heap。heap采用完全二叉树的结构,当然不是真正的binary tree,因为对于完全二叉树,我们通常用一个数组来表示。 以下几个算法都是STL的泛型算法,包含在头文件algorithm里,priority_queue的push(),pop()都有直原创 2014-04-26 21:24:49 · 582 阅读 · 0 评论
分享