
算法基础复习
文章平均质量分 67
m0_69767208
这个作者很懒,什么都没留下…
展开
-
数据结构之平衡二叉搜索树
AVL是一种自平衡二叉搜索树(self-balancing binary search tree)的数据结构,它的名称来源于其发明者G.M. Adelson-Velsky和E.M. Landis。AVL树通过在每次插入或删除节点时进行旋转操作,来确保树的高度始终保持在一个较小的范围内,从而保持树的平衡性。AVL树的平衡性是通过节点的高度差(即左子树高度和右子树高度之差)来衡量的。在一个平衡的AVL树中,任何节点的左子树和右子树的高度差不超过1。原创 2024-02-23 11:14:38 · 926 阅读 · 0 评论 -
数据结构之哈夫曼树
哈夫曼树的定义:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),哈夫曼树是带权路径长度最短的树。权值较大的结点离根较近。权:将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度:从根结点到该结点之间路径长度与该结点的权的乘积。树的带权路径长度:树中所有叶子结点的带权路径长度之和。原创 2024-02-23 10:53:32 · 859 阅读 · 0 评论 -
平衡二叉树AVL
二叉搜索树(Binary Search Tree,BST)是一种特殊的二叉树数据结构,其中每个节点的值都大于其左子树中的任何节点的值,且小于其右子树中的任何节点的值。它的特点使得在搜索、插入和删除操作上具有高效性。以下是一些关于二叉搜索树的重要特性:左子树中的所有节点的值都小于根节点的值。右子树中的所有节点的值都大于根节点的值。左右子树本身也是二叉搜索树。由于这些特性,二叉搜索树可以用于高效地实现插入、搜索和删除操作。原创 2024-02-22 22:47:35 · 385 阅读 · 0 评论 -
数据结构之堆
在计算机科学中,堆(Heap)是一种特殊的数据结构,它是一种完全二叉树(或者近似完全二叉树),并且满足堆属性。堆有两种常见的类型:最大堆(Max Heap)和最小堆(Min Heap)。最大堆中,父节点的值大于或等于其子节点的值,而最小堆中,父节点的值小于或等于其子节点的值。堆的主要特点是根节点(顶部节点)具有最大(或最小)值。这使得堆在很多应用中非常有用,例如优先队列和堆排序算法。堆的实现可以使用数组或者链表来表示。在数组实现中,根节点存储在索引位置0,而子节点的索引位置可以通过简单的计算得到。原创 2024-02-22 20:36:26 · 486 阅读 · 0 评论 -
哈希结构(散列表)
数据结构之哈希数据结构之哈希什么是哈希哈希结构(Hash Table)也被称为散列表,是一种用于实现字典(Dictionary)的数据结构。哈希结构将键(Key)映射到值(Value)的过程称为哈希(Hashing),哈希函数(Hash Function)用于将键映射到一个固定大小的数组(Hash Table),数组中的每个元素称为桶(Bucket),每个桶可以存储一个或多个键值对。哈希结构的主要优点是可以在常数时间内进行插入、查找和删除操作,因此在大多数情况下,哈希结构的操作效率非常高。原创 2024-02-02 20:28:58 · 1236 阅读 · 0 评论 -
数据结构之队列
什么是队列队列(Queue)也是一种运算受限的线性表,它限定在表的一端进行插入操作,在表的另一端进行删除操作。队列的结构特性是:先进先出FIFO ( First In First Out)。队列又被称为先进先出表。队尾:允许插入的一端称作队尾(Rear)队首:允许删除的一端称作队首(Front)队列为空的时候 队头front和队尾tail都是0的位置,入队的时候队尾tail往后移动,出队的时候front往队列tail靠拢因为front的移动,导致数组队列存在伪溢出现象。原创 2024-02-01 17:44:34 · 383 阅读 · 1 评论 -
数据结构之栈
什么是栈栈是一种运算受限的线性表,它限定只能在表的一端进行插入和删除操作。栈的结构特性是:后进先出LIFO ( Last In First Out)。栈又被称为后进先出表。栈顶:允许插入和删除的一端称作栈顶栈顶:不允许插入和删除的一端称作栈底链式栈。原创 2024-01-29 18:22:32 · 412 阅读 · 0 评论 -
数据结构之二叉树的存储与遍历
二叉树是n (n≥0)个结点的有限集合。每个节点最多有两个子节点,分别称为左子节点和右子节点。左子节点和右子节点可以为空。二叉树的子树也是二叉树。原创 2024-01-26 21:18:56 · 386 阅读 · 1 评论 -
二分法(分而治之核心思想)
"分而治之"(Divide and Conquer)是一种算法设计策略,它将一个问题分解成更小的、相互独立的子问题,然后递归地解决这些子问题,最后将它们的解合并起来,得到原始问题的解。将原问题分解为若干个规模较小的子问题。这一步通常通过递归的方式来实现。递归地解决这些子问题。如果子问题足够小,就直接解决。将子问题的解合并成原问题的解。这个思想常常用于解决一些复杂的问题,例如排序、查找、图算法等。一些著名的算法,比如归并排序和快速排序,就是分而治之的典型例子。将待排序的数组分成两半。原创 2024-01-15 17:35:00 · 850 阅读 · 0 评论