
数据结构
kerer-sk
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构
线性表1. 顺序存储结构define MAXSIZE 20typedef int ElemType;typedef struct{ ElemType data[MAXSIZE]; int length;}SqList2. 链式存储结构单链表typedef struct Node{ Elemtype data; struct Node *next;}Nod原创 2017-06-20 16:23:25 · 250 阅读 · 0 评论 -
哈夫曼树
路径长度:从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径长度。树的路径长度就是从根到每一结点的路径长度之和。这个树的路径长度长度:1+2+3+3+2+1+2+2=16如果考虑结点带有权值,注意只有叶子节点带有权值,树的带权路径长度为树中所有叶子节点的带权路径长度(树的带权路径长度为从该节点到根节点的路径长度与节点上权值的乘积)和。其中带权路径长度WPL最小二叉树原创 2017-09-12 21:43:44 · 324 阅读 · 0 评论 -
排序
排序算法主要有冒泡排序(时间复杂度为O(n^2))选择排序(时间复杂度为O(n^2),单比冒泡排序稍微好点,主要是交换次数少)直接插入排序(时间复杂度为O(n^2),比选择排序稍微好点)希尔排序堆排序归并排序快速排序原创 2017-07-28 14:30:40 · 223 阅读 · 0 评论 -
排序(二)
1.希尔排序希尔排序其实就是插入排序的改进,插入排序可以看做每次比较的步长为1,而希尔排序设置一个初始的步长,步长迭代缩减,最后以1结束。希尔排序的复杂度主要和设置这个初始步长有关。当步长选择的比较差时复杂度就接近插入排序的复杂度。这是插入排序的代码void InsertSort(SqList *L){ int i,j; for(i=2;i<=L->length;i++)// 从第原创 2017-07-28 18:06:20 · 228 阅读 · 0 评论 -
查找(一)
1、查找的简介查找分为:静态查找和动态查找 静态查找:只做查找操作 动态查找:在查找的过程中同事2插入查找表中不存在的数据元素,或者删除存在的元素查找的算法:顺序查找(加入哨兵优化)折半查找,插值查找,斐波那契查找(针对有序表的查找)线性索引查找;稠密索引、分块索引、倒排序索引2、查找算法的具体思路1)顺序查找顺序查找就是最简单的查找办法,通过for循环,遍历整个表,直到找到对应原创 2017-07-25 23:11:34 · 302 阅读 · 0 评论 -
查找 二(二叉排序树、平衡二叉树、)
1、二叉排序树二叉排序树又称为二叉查找树。是一个具有下列属性的二叉树:若左子树不为空,则左子树上所有节点值均小于它的根节点的值若右子树不为空,则右子树上所有节点的值均大于它的根节点的值当对树进行中序遍历时,我们就会得到一个从小到大的序列。 构造二叉排序树的目的:提高查找和插入删除关键字的速度。 注意:二叉排序树中不允许有重复或相等的key值出现。1)删除操作当删除的节点为叶子节点时,直接原创 2017-07-25 23:33:17 · 581 阅读 · 0 评论 -
查找三 多路查找树(2-3树,2-3-4树,B树、B+树)
应用场景:解决在硬盘中的大量数据中的查找。因为大量数据存储在硬盘中,不能一次全部加载到内存中,而每次查一个数据读一次硬盘,读取速度太慢,这时就需要使用一种数据结构一部分一部分读入,这就是多路查找树的作用。2-3树2结点:每个几点包含一个元素和两个孩子(或者没有孩子)。其中左孩子小于该节点元素,右孩子大于该节点元素。 3结点:每个节点包含两个元素和三个孩子(或者没有孩子)。其中左孩子小于节点中较小元原创 2017-07-26 00:01:22 · 2099 阅读 · 0 评论