Happy月月鸟的博客

Thinking will not overcome fear but action will.

算法与数据结构 (Algorithms and Data Structures)

分治算法(14)

分治算法 1. 概念 分治法(Divide and Conquer),全称为“分而治之”,是一种非常重要且常见的算法策略,通常通过递归来实现。这个策略包含两个主要步骤:“分”和“治”。通过分治策略,我们能够将复杂的问题化繁为简,有效地提升算法的效率和解决问题的能力。 分(划分阶段):递归地将原问题分解为两个或多个子问题,直到子问题足够小无法再分时终止。 治(合并阶段):从最小子...

算法与数据结构 (Algorithms and Data Structures)

贪心算法(13)

贪心算法(Greedy Algorithm)是一种求解问题的算法策略,它通过在每一步选择中都采取当前最优或最有希望的选择,从而试图获得全局最优解。这种算法的特点是每一步都做出看似最好的选择,不去回溯或考虑全局,只关注眼前的局部最优解。 1. 贪心算法的基本思想 贪心算法的核心思想是局部最优策略,即每一步都选择当前状态下看起来最好的选项,而不顾之后的情况。虽然这种方法不一定能得到问题的全局...

算法与数据结构 (Algorithms and Data Structures)

排序算法(12)

1. 排序算法 1.1. 排序算法的简介 排序算法是一类用于将一组数据按照特定顺序(通常是从小到大或从大到小)排列的方法和过程。在计算机科学中,排序是一个基本问题,因为许多其他算法(如搜索和合并算法)都依赖于数据的有序性。排序算法有很多种,不同的算法在时间复杂度、空间复杂度以及稳定性(即是否保持相同值的相对顺序)等方面表现各异。 排序算法(sorting algorithm)用于将一组...

算法与数据结构 (Algorithms and Data Structures)

搜索算法(11)

1. 二分查找 二分查找(binary search)是一种基于分治策略的高效搜索算法。它利用数据的有序性,每次迭代将搜索范围缩小一半,直到找到目标元素或搜索区间为空为止。 问题描述 给定一个长度为 n 的数组 nums,其中元素按从小到大的顺序排列且不重复。请查找并返回元素 target 在该数组中的索引。若数组不包含该元素,则返回 -1。示例如图所示。 二分查找示例数据 如...

算法与数据结构 (Algorithms and Data Structures)

图(10)

1. 图的基本概念 图(graph)是一种非线性数据结构,由顶点(vertex)和边(edge)组成。我们可以将图 $G$ 抽象地表示为一组顶点 $V$ 和一组边 $E$ 的集合。以下示例展示了一个包含 5 个顶点和 7 条边的图。 \[\begin{aligned} V & = \{ 1, 2, 3, 4, 5 \} \\ E & = \{ (1,2), (1,3), ...

算法与数据结构 (Algorithms and Data Structures)

堆(9)

1. 基本概念 堆(Heap)是一种特殊的树形数据结构,满足以下特性: 完全二叉树:堆是一棵完全二叉树,也就是说,除了最后一层,其余各层的节点都是满的,且最后一层的节点都集中在最左边。 堆性质: 最大堆(Max-Heap):对于堆中的每个节点,父节点的值都大于或等于其子节点的值。换句话说,根节点包含最大值。 最小堆(M...

算法与数据结构 (Algorithms and Data Structures)

二叉树(8)

1. 基本概念 二叉树(binary tree)是一种非线性数据结构,用于表示“祖先”与“后代”之间的层级关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含一个值、一个指向左子节点的引用和一个指向右子节点的引用。每个节点都有两个引用,分别指向左子节点和右子节点,而该节点则被称为这两个子节点的父节点。给定一个二叉树的节点时,该节点的左子节点及其以下节点形成的...

算法与数据结构 (Algorithms and Data Structures)

栈与队列(7)

栈(Stack)和队列(Queue)是计算机科学中两种基本的数据结构,广泛应用于各种算法和系统设计中。下面是对这两种数据结构的详细介绍。 栈(Stack) 1. 定义 栈是一种后进先出(LIFO, Last In, First Out)的数据结构。这意味着最后插入栈的数据将是最先被移除的。 2. 基本操作 压栈(Push): 向栈顶添加一个元素。 弹栈(Pop): 从栈顶移除...

算法与数据结构 (Algorithms and Data Structures)

哈希表(6)

哈希表(Hash Table)是一种用于快速数据查找的数据结构。它通过哈希函数将键映射到数组中的索引,以实现常数时间复杂度的查找、插入和删除操作。下面详细介绍哈希表的基本概念、操作、实现和应用。 1. 哈希表基本概念 哈希表由一个数组和一个哈希函数组成。哈希函数将键映射到数组的索引,从而决定了键值对存储在数组中的位置。常用的操作包括插入、删除和查找。 哈希函数 哈希函数的主要作用是将...

算法与数据结构 (Algorithms and Data Structures)

字符串(5)

字符串定义 在Python中,字符串(String)是一种用于表示文本的数据类型。字符串由字符组成,可以使用单引号 (')、双引号 (") 或三重引号 (''' 或 """) 来创建。三重引号用于表示多行字符串。 创建字符串 # 单引号创建字符串 single_quote_str = 'Hello, World!' # 双引号创建字符串 double_quote_str = "Pyth...