算法
文章平均质量分 94
算法
ChenxuanRao
这个作者很懒,什么都没留下…
展开
-
多项式与快速傅里叶变换(FFT)
计算两个n次多项式相乘的最直接方法所需的时间为Θ(n2)\Theta(n^2)Θ(n2),在本文中,我们将讨论快速傅里叶变换(FFT),使得多项式相乘的时间复杂度降为Θ(nlgn)\Theta(nlgn)Θ(nlgn)。一、多项式的表示系数表示和点值表示对于一个次数界为n的多项式A(x)=∑j=0n−1ajxjA(x)=\sum_{j=0}^{n-1}a_{j}x^jA(x)=∑j=0n−1ajxj而言,其系数表示是一个由系数组成的向量a=(a0,a1,...,an−1)a=(a_{0},a_{1原创 2023-07-17 18:47:23 · 835 阅读 · 1 评论 -
排序算法(三) 冒泡排序和快速排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2023-04-01 00:23:58 · 1805 阅读 · 0 评论 -
排序算法(二) 选择排序和堆排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2023-03-26 00:31:17 · 1016 阅读 · 0 评论 -
排序算法(一) 插入排序和希尔排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。原创 2023-03-25 17:30:31 · 241 阅读 · 0 评论 -
KMP算法
KMP算法是一种经典的字符串匹配算法,相较于朴素的字符串暴力匹配算法,其在时间复杂度上优化至O(n)的线性时间复杂度,极大提高了匹配效率。在本文中,统一规定用【】来表示指向主串的指针,用【】来表示指向模式串的指针。用来表示主串的长度,m来表示模式串的长度。朴素的字符串暴力匹配算法枚举了所有的主串中开始匹配的位置(cp),当匹配失败,cp加1,i回退到cp,j回退到0,在最坏的情况下,需要匹配m*n次。朴素算法时间复杂度如此大的原因主要在于每次匹配失败时。原创 2023-03-20 09:20:29 · 422 阅读 · 0 评论