第12讲:树状数组(Binary Indexed Tree)基础与应用 树状数组,又称为二叉索引树(Fenwick Tree),是一种用于高效处理数组前缀和与修改操作的数据结构。与线段树类似,树状数组的目标是在支持数组更新的同时,实现快速的前缀和查询。树状数组的时间复杂度通常为 O(log n),这在很多应用中具有很高的效率。 1. 树状数组的基本概念 树状..
在第11讲中,我们将深入探讨一种非常实用且高效的数据结构——线段树(Segment Tree)。线段树是一种平衡的二叉树数据结构,适合用于处理数组元素的动态和静态区间查询问题,如区间求和、区间最小值等。线段树最常见的应用场景是在频繁请求区间查询和更新的情况下,由于其结构的特殊性,线段树可以在 O(log n) 的时间复杂度内完成查询和更新操..
数据结构编程实践:Python版系列第10讲——B+树 欢迎来到数据结构编程实践系列的第十讲。在本次课程中,我们将深入探讨一种重要的数据库索引结构——B+树。B+树在文件系统和数据库中得到了广泛应用,其扇出较大、高效的范围查询特性,使得它在处理大规模数据时表现出色。 什么是B+树? B+树是一种自平衡的树数据结构,和B树相似,但有..
在数据结构和数据库系统中,B树(B-tree)是一种非常重要的多路搜索树,主要用于实现储存和检索数据的高效算法。它是一种自平衡的树结构,广泛用于文件系统和数据库系统中,因其可以在磁盘或者存储设备上进行有效的IO操作。 B树的基本概念 节点的容量:B树的每个节点包含最多m-1个关键字,并且有最多m个子树,其中m是B树的阶(degree)..
红黑树是一种自平衡的二叉搜索树,它确保树的路径从根到叶子的最长的一条不会超过最短的一条的两倍,通过添加颜色属性来约束树的平衡性。下面是红黑树的一些基本性质和Python实现示例,以帮助你理解红黑树的工作方式。 红黑树性质 每个节点是红色或黑色。 根节点是黑色。 每个叶子节点(NIL节点,空节点)是黑色。 如果一个节点是红色,则..
AVL树是一种自平衡的二叉搜索树,它通过在插入和删除操作后调整树的平衡因子,确保树的高度保持在一个对数级别,从而提供高效的查找、插入和删除操作。以下是一个简单的Python版AVL树实现,涵盖了基本的插入操作及其所需的旋转操作。 AVL树的基本概念 每个节点的平衡因子(Balance Factor)是指节点左子树的高度减去右子树的高度。..
在本系列的第五讲中,我们将探讨数据结构中非常重要的一个概念——二叉树,并通过Python代码来实现和应用它。二叉树是一种层次结构的数据结构,每个节点最多有两个子节点,通常被称为“左子节点”和“右子节点”。 二叉树的基本概念 节点(Node): 每个节点包含一个值(或数据)。 每个节点最多有两个子节点:左子节点和右子节点。 根节..
在第4讲中,我们将介绍数据结构中的一种重要类型——队列,并使用Python进行编程实践。队列是一种先进先出(FIFO, First In First Out)的数据结构,这意味着最早进入队列的元素将被最先移除。 队列的基本操作 入队(Enqueue):将元素添加到队列的末尾。 出队(Dequeue):移除并返回队列的第一个元素。 队首(Front/Peek):检..
归并排序是一种经典的排序算法,基于分治策略。下面是一个用C语言实现的归并排序算法示例: #include stdio.h #include stdlib.h // 合并两个子数组 void merge(int arr[], int left, int mid, int right) { int i, j, k; int n1 = mid - left + 1; int n2 = right - mid; // 创建临时数组 int *L = (int *)mall..
栈(Stack)是一种非常常用的数据结构,在计算机科学中具有重要作用。它是一种线性数据结构,特点是后进先出(LIFO - Last In, First Out)。这意味着最新添加的元素最先被移除。可以把它想象成一堆盘子,只有最上面的盘子可以被移走。 栈的基本操作 入栈(Push): 将一个元素添加到栈的顶端。 出栈(Pop): 移除并返回栈顶的元..