
数据结构
文章平均质量分 84
颜 然
西安邮电大学21届计科学生,目前为西邮Linux兴趣小组成员。匀速乃极速。
展开
-
Java实现一些排序:不要再只会冒泡啦
归并排序算法将数组分为两半,然后对每个部分持续递归划分子数组。直到每组只有一个元素后开始合并排序,接下来就是不断合并排序合并排序....最终两部分排好序后直接合并即可: 代码实现如下: 其中方法merge的归并实现主要是靠下标跟踪,两数组元素逐一比较后,得出较小的元素放入最终数组temp中,被放入元素的所属原数组下标++(为了接着往下走)。通过两两比较最终全部放入temp中实现排序:快速排序主要是通过选出一个pivot(基准)元素,然后将数组分为两部分,使得第一部分中的所有元素都.........原创 2022-06-22 10:04:02 · 292 阅读 · 0 评论 -
BST 二叉搜索树
目录一、BST概念二、BST的查找、插入和遍历1、查找2、插入3、遍历(1)前序(2)中序(递增显示)(3)后序(4)深度优先(5)广度优先4、删除(1)无左子结点时(2)有左子结点时三、定义一个树接口四、实现BST类 五、数据压缩:哈夫曼编码前几天学习了堆排序,其实堆排序用到的结构就是二叉树。那么BST是满足如下规则的二叉树:遵循BST“左小右大”的原则,查询时从根结点向下依次查找各个子树,直到 子树为空 或 已查询到 为止。否则设置的对比current结点将一直与目标值比较,小于当前结点时赋给curre原创 2022-06-28 10:00:06 · 689 阅读 · 0 评论 -
AVL 平衡二叉搜索树
二叉搜索树(BST)虽能缩短查找效率,但如果数据有序或接近有序,BST将退化为单支树,此时查找元素就相当于在顺序表中搜索元素,效率低下。那么此时如果能保证每个结点的左右子树高度差的绝对值不超过1,就可以降低树的高度,从而减少平均搜索长度。所以AVL带着这个使命诞生了。在二叉树中,如果每个结点的子树的高度差距为0、1或-1,则称这棵树是平衡二叉树,即AVL。执行插入或删除操作后如果导致了AVL的不平衡,那么我们需要执行旋转操作来重新平衡这棵树。旋转操作主要有LL、RR、LR、RL四种类型。向左子树中的左孩子插原创 2022-06-30 00:33:37 · 252 阅读 · 0 评论