数据结构
芝麻学编程
这个作者很懒,什么都没留下…
展开
-
二叉排序树->二叉排序树(->AVL树->SB树) AVL代码演示
二叉排序树、二叉搜索树左子树 < 根节点 < 右子树中序遍历:左子树,跟结点,右子树;跟结点的值.二叉查找树插入,根节点为空就有新元素作为根节点,否则,传入的参数和根节点进行比较;value等于当前节点就返回,如果当前节点存在左孩子,就继续调用插入的方法,如果不存在,就把新的元素插入到当前节点的左孩子部分;二叉排序树的局限性:如果把下面的一行数字插入为排序树:[1, 2, 3, 4, 5]这个时候二叉排序树就会退化成链表,退化成链表后,查找数字的时间复杂度变为了O(n),空间原创 2020-07-23 18:53:49 · 146 阅读 · 0 评论 -
排序问题
稳定排序:插入排序、冒泡排序、归并排序原创 2020-07-05 15:57:48 · 204 阅读 · 0 评论 -
查找算法:二分查找(1,0)问题模型(0,1)问题模型、三分查找
查找是指在数据集合中寻找满足某种条件的数据元素的过程,用于查找的数据集合则成为查找表,查找表中的数据元素类型是一致的,并且有能够唯一标识出元素的关键字。如果从查找表找出了关键字等于某一个给定值的数据元素,则称为查找成功,否则称查找不成功。静态查找表:对查找表只进行(查找和检索)静态查找表建立之后,不能再执行插入或者是删除的操作,查找表页不再发生变化。对应的,如果对查找表还需要执行两种操作,那么这类查找表就是动态查找表。针对静态查找表,比如顺序查找、折半查找、分块查找等,动态查找表:(查找、检索、插入原创 2020-07-05 10:59:36 · 468 阅读 · 0 评论 -
堆和优先队列
一、大顶堆和小顶堆大顶堆:每一个结点:(当前结点> max (左结点、右结点)小顶堆:每一个结点:(当前结点 < min (左结点、右结点)由定义的出来,大顶堆的最大值一定是在跟结点,次最大值是在第二层,其余的大小不能判定;同理可以得到,小顶堆的最小值一定是在跟结点。二、大顶堆的相关操作定义typedef struct heap { int *data; int size; int cnt;} heap;data用于存放连续区域的数字,size表示最多能原创 2020-07-04 16:36:16 · 264 阅读 · 0 评论 -
图的存储方法的选择
稠密表和稀疏表的存储方式稀疏表邻接表来存储,如果用邻接矩阵存储,就存下来太多的0,浪费了空间稠密表邻接矩阵来存储,可以充分利用空间,邻接表来存储,这个操作会增加很高的负复杂度。有向图:邻接矩阵不一定对称有向图图中的边是单边的,如果用邻接矩阵来存储,邻接矩阵不一定是对称的。无向图:邻接矩阵一定是对称的因为无向图中的边是双边的查询两个顶点之间是否有边,邻接表比邻接矩阵更加的方便,如果用邻接表就要在链表中逐个查找。相比之下,邻接矩阵比邻接表更加滴方便。...原创 2020-07-04 11:12:13 · 182 阅读 · 0 评论