数据结构与算法
文章平均质量分 93
数据结构与算法
躺平的小懒猫
平平安安,健健康康
展开
-
算术平均滤波法
算术平均滤波法是一种简单有效的数字信号处理技术,可以帮助我们减少信号中的随机噪声。在本文中,我们介绍了如何使用 C++ 实现算术平均滤波法,并解释了算法的工作原理和代码细节。使用该算法可以对实时或离线的数据进行滤波处理,以提高数据质量和精度。原创 2023-09-21 10:20:59 · 1686 阅读 · 0 评论 -
合并法排序
合并法排序(Merge Sort)是一种基于分治思想的排序算法,其原理如下:1.将待排序数组分成两个子数组,每个子数组包含大约相等数量的元素。2.递归地对子数组进行排序,直到每个子数组的大小为1。3.将已排序的子数组合并成一个新的排序数组,合并过程中按照从小到大的顺序逐个比较两个子数组中的元素,并将较小的元素放入新数组中,直到所有元素都被放入新数组中。4.最终得到一个有序数组。合并排序的时间复杂度是O(nlogn),其中n是待排序数组的长度。它的空间复杂度是O(n)。原创 2023-09-21 10:10:54 · 1820 阅读 · 0 评论 -
判断素数算法实现
素数是只有1和它本身两个因子的数。判断一个数是不是素数可以通过以下方法:试除法:将这个数除以2到它的平方根之间的每个整数,如果都无法整除,则该数为素数。费马小定理:如果p是素数,a是不被p整除的整数,那么a^(p-1)-1能被p整除。米勒-拉宾素性检验:对于一个整数n,令n-1=d·2d mod n = 1或者存在一个r(0原创 2023-09-21 10:05:08 · 245 阅读 · 0 评论 -
哥德巴赫猜想
哥德巴赫猜想原理(Goldbach Conjecture)是一个数论问题,它指出:任何一个大于2的偶数都可以表示成两个质数之和。例如,6可以表示为3+3,8可以表示为3+5,10可以表示为3+7、5+5等等。这个猜想最早由哥德巴赫于1742年提出,但至今还未被证明。虽然人们已经通过计算机的帮助,证实了数百万以内的偶数都可以表示成两个质数之和,但对于更大的数,目前仍然没有一个完整的证明。这个问题在数论中有着重要的意义,涉及到质数分布和整数的性质等多个方面。原创 2023-09-21 10:04:02 · 1010 阅读 · 0 评论 -
求两个整数的最小公倍数
两个整数的最小公倍数是它们的公共倍数中最小的一个数。要求最小公倍数,可以使用以下原理:分解质因数:将这两个整数分解质因数,分别写成素数的乘积形式。取出公共因子:找出这两个整数各自的质因数中的公共因子,并将其相乘。取出非公共因子:把剩下的质因数分别乘上去。相乘:把步骤2和步骤3得到的结果相乘即为最小公倍数。例如,求6和12的最小公倍数:6 = 2 × 3步骤1:将6和12分解质因数,得到6 = 2 × 3,12 = 2 × 2 × 3。步骤2:它们的公共因子是2和3。原创 2023-09-21 09:59:56 · 1596 阅读 · 0 评论 -
求两个整数的最大公约数
最大公约数原理指出,两个自然数的最大公约数等于其中较小的数与它们的差的最大公约数。该原理可以用于求解两个自然数的最大公约数,步骤如下:比较两个自然数的大小,将较小的数记为a,较大的数记为b。用b除以a,得到余数r,即b除以a的余数,可以表示为:b = a × q + r,其中q为商,r为余数。如果r等于0,则a即为最大公约数。如果r不等于0,则将前一步中的除数a替换为余数r,再用原来的除数a除以新的余数r,得到新的余数r1,即:a = r × q1 + r1。原创 2023-09-21 09:54:31 · 1422 阅读 · 0 评论 -
数据结构与算法之最长公共子串
最长公共子串问题是指给定两个字符串S1和S2,求它们的公共子串中最长的那一个。其实就是求两个字符串的最长重复子串。最朴素的算法就是枚举S1和S2的每一对子串,然后判断它们是否相等,时间复杂度是O(n^3)。但是这种算法效率太低,无法满足实际需求。一般采用动态规划的思想进行求解,令dp[i][j]表示以S1的前i个字符和S2的前j个字符为结尾的公共子串的长度,当S1[i]=S2[j]时,dp[i][j]=dp[i-1][j-1]+1;否则dp[i][j]=0。最后找出dp[i][j]的最大值即可。原创 2023-09-21 09:45:19 · 3596 阅读 · 0 评论 -
数据结构与算法之字符串反转
字符串反转是一个常见的算法问题,可以用多种方法实现。下面介绍几种实现字符串反转的常见算法。在Java等语言中,字符串是一个字符数组。我们可以通过访问和修改数组元素来反转字符串。例如,可以首先将字符串转换为字符数组,然后使用从首尾两端遍历数组的循环,交换数组元素的位置实现字符串反转。StringBuilder是一个可变的字符序列,可以方便地进行字符串操作。我们可以使用StringBuilder的reverse()方法来实现字符串反转。原创 2023-09-21 09:44:26 · 334 阅读 · 0 评论 -
数据结构与算法之字符串排列
字符串排列指的是将一个字符串中的所有字符按照一定顺序进行排列,使得得到一个新的字符串。例如,字符串"abc"的排列有"abc"、“acb”、“bac”、“bca”、“cab”、"cba"六种可能。字符串排列的原理可以通过递归实现。假设输入的字符串为s,先将第一个字符和后面的字符依次交换位置,得到新字符串s’。接着将s’的第一个字符和剩下的字符进行交换,得到新字符串s’'。以此类推,直到交换到最后一个字符。在实现字符串排列时,需要注意以下几点:对于有重复字符的字符串,需要去重,避免出现重复排列。原创 2023-09-20 10:40:24 · 882 阅读 · 0 评论 -
数据结构与算法之中序遍历
中序遍历是一种二叉树的遍历方式,其遍历顺序为先遍历左子树,然后遍历根节点,最后遍历右子树。具体的过程如下:如果当前节点的左子树非空,则递归遍历左子树。访问当前节点。如果当前节点的右子树非空,则递归遍历右子树。中序遍历是二叉搜索树中最常用的遍历方式之一,因为它可以将树中所有节点按照大小顺序输出。在实际应用中,中序遍历常用于查找二叉搜索树中的某个节点,或者对二叉搜索树中的节点进行排序。原创 2023-09-20 10:39:16 · 5450 阅读 · 0 评论 -
数据结构与算法之字符串匹配算法
字符串匹配算法是在一个文本串中寻找一个模式串出现的算法。其基本原理是在文本串中逐个比较模式串的字符,如果匹配则继续比较下一个字符,如果不匹配则将模式串向右移动一位,继续比较。以下是一些常用的字符串匹配算法:暴力匹配法(Brute Force):从文本串的第一个字符开始,逐个比较模式串和文本串中的字符,如果不匹配则将模式串向右移动一位,继续比较。KMP算法(Knuth-Morris-Pratt):利用模式串本身的特点,在匹配失败时不回溯文本串,而是回溯模式串,让其尽量多地向右移动一位,以提高匹配效率。原创 2023-09-20 10:38:10 · 997 阅读 · 0 评论 -
数据结构与算法之后序遍历
数据结构与算法之后序遍历原创 2023-09-20 10:34:37 · 4610 阅读 · 0 评论 -
数据结构与算法之前序遍历
前序遍历(Preorder Traversal)是二叉树遍历的一种方式。在前序遍历中,先遍历根节点,然后遍历左子树,最后遍历右子树。在非递归实现中,可以通过栈来实现前序遍历。前序遍历的时间复杂度为O(n),其中n为二叉树中节点的个数。原创 2023-09-20 10:32:56 · 621 阅读 · 0 评论 -
数据结构与算法之广度优先遍历
广度优先遍历(Breadth-First Search,BFS)是一种遍历或搜索数据结构(如树或图)的算法。它从根节点开始,依次遍历同一级别的所有节点,然后再逐级遍历下一级别的节点,直到遍历完整个结构。BFS使用队列(queue)来实现遍历过程。从根节点开始,将根节点入队,然后进入循环。循环中取出队列首部节点,访问它的所有邻居节点并将其入队,然后重复上述步骤,直到队列为空。BFS的时间复杂度为O(N),其中N代表节点个数。因为它需要遍历整个结构中的每个节点一次。原创 2023-09-20 10:29:03 · 3690 阅读 · 0 评论 -
数据结构与算法之深度优先遍历
数据结构与算法之深度优先遍历原创 2023-09-20 10:23:48 · 2658 阅读 · 0 评论 -
数据结构与算法之最大子数组和问题
数据结构与算法之最大子数组和问题原创 2023-09-20 10:20:46 · 934 阅读 · 0 评论 -
数据结构与算法之最优矩阵链乘法
数据结构与算法之最优矩阵链乘法原创 2023-09-20 10:17:25 · 330 阅读 · 0 评论 -
数据结构与算法之最短编辑距离
数据结构与算法之最短编辑距离原创 2023-09-20 10:13:49 · 769 阅读 · 0 评论 -
数据结构与算法之最长递增子序列
数据结构与算法之最长递增子序列原创 2023-09-20 10:10:15 · 1287 阅读 · 2 评论 -
数据结构与算法之最长公共子序列
数据结构与算法之最长公共子序列原创 2023-09-20 10:04:01 · 1425 阅读 · 0 评论 -
数据结构与算法之背包问题
数据结构与算法之背包问题原创 2023-09-20 09:57:42 · 261 阅读 · 0 评论 -
数据结构与算法之线性查找算法
数据结构与算法之线性查找算法原创 2023-09-20 09:49:25 · 484 阅读 · 0 评论 -
数据结构与算法之最小费用最大流算法
数据结构与算法之最小费用最大流算法原创 2023-09-20 09:48:46 · 1303 阅读 · 0 评论 -
数据结构与算法之基数排序算法
数据结构与算法之基数排序算法原创 2023-09-19 13:41:53 · 473 阅读 · 0 评论 -
数据结构与算法之计数排序
数据结构与算法之计数排序原创 2023-09-19 13:33:34 · 167 阅读 · 0 评论 -
数据结构与算法之随机快排算法
数据结构与算法之随机快排算法原创 2023-09-19 13:08:44 · 355 阅读 · 0 评论 -
数据结构之最短路径
数据结构之最短路径原创 2023-09-19 11:00:25 · 634 阅读 · 0 评论 -
数据结构与算法之Alpha-Beta剪枝
数据结构与算法之Alpha-Beta剪枝原创 2023-09-19 10:59:48 · 2725 阅读 · 0 评论 -
数据结构与算法之基于估价函数的剪枝
数据结构与算法之基于估价函数的剪枝原创 2023-09-19 10:59:04 · 100 阅读 · 0 评论 -
数据结构与算法之状压DP剪枝
数据结构与算法之状压DP剪枝原创 2023-09-19 10:58:31 · 110 阅读 · 0 评论 -
数据结构与算法之限界搜索剪枝
数据结构与算法之限界搜索剪枝原创 2023-09-19 10:57:56 · 1682 阅读 · 0 评论 -
数据结构与算法之多路查找树
数据结构与算法之多路查找树原创 2023-09-19 10:57:01 · 191 阅读 · 0 评论 -
数据结构与算法之图的遍历
数据结构与算法之图的遍历原创 2023-09-19 10:42:39 · 754 阅读 · 0 评论 -
数据结构与算法之关键路径
数据结构与算法之关键路径原创 2023-09-19 10:40:09 · 1317 阅读 · 0 评论 -
数据结构与算法之最短路径
数据结构与算法之最短路径原创 2023-09-19 10:36:48 · 801 阅读 · 0 评论 -
数据结构与算法之分支界线查找
数据结构与算法之分支界线查找原创 2023-09-19 10:17:20 · 157 阅读 · 0 评论 -
数据结构与算法之二分查找
数据结构与算法之二分查找原创 2023-09-18 11:03:23 · 90 阅读 · 1 评论 -
数据结构与算法之动态规划算法
数据结构与算法之动态规划算法原创 2023-09-18 11:01:22 · 130 阅读 · 0 评论 -
数据结构与算法之快速傅里叶变换算法
数据结构与算法之快速傅里叶变换算法原创 2023-09-18 10:56:44 · 463 阅读 · 0 评论 -
数据结构与算法之SLIQ算法
数据结构与算法之SLIQ算法原创 2023-09-18 10:48:01 · 320 阅读 · 0 评论