
C语言经典算法
文章平均质量分 92
JJJ69
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言经典算法之k最近邻(K-Nearest Neighbor, KNN)算法
k最近邻(K-Nearest Neighbor, KNN)算法是一种基于实例的学习方法,主要用于分类和回归问题。在机器学习中,它不预先假设数据分布模型,而是直接存储训练样本,并在预测阶段根据新样本与已有训练样本之间的相似度进行决策。原创 2024-02-11 09:26:03 · 4283 阅读 · 67 评论 -
C语言介绍Skein哈希函数
Skein 是由 Niels Ferguson、Bruce Schneier、David McGrew、John Kelsey、Doug Whiting、Mihir Bellare、Tadayoshi Kohno、Jon Callas 和 Jesse Walker 共同设计的,并于2008年作为 SHA-3 竞赛的候选算法提交。虽然最终 Keccak 被选为 SHA-3 标准,但 Skein 仍因其优秀的性能和安全性而受到关注,并被广泛研究和应用于多种非官方场景。原创 2024-04-17 15:58:11 · 846 阅读 · 0 评论 -
C语言介绍NTRUEncrypt公钥加密
NTRUEncrypt是一种基于格理论的公钥加密算法,由Jeffrey Hoffstein、 Jill Pipher和Joseph H. Silverman在1996年提出。NTRUEncrypt的特点是其加密速度较快且密钥尺寸较小,特别适用于资源有限的嵌入式系统。原创 2024-04-16 10:24:37 · 1118 阅读 · 0 评论 -
C语言介绍X-Tree索引
X-Tree 是一种用于多维数据空间索引的数据结构,特别适用于处理高维数据的查询。它是由 Berchtold、Köppen 和 Günther 在 1996 年提出的,旨在克服当时流行的 B 树、R 树及其变种在处理高维数据时可能出现的性能瓶颈。X-Tree 结构设计巧妙,能够有效地处理范围查询、最近邻查询等多种查询类型,并且在空间利用率和查询性能之间取得较好的平衡。原创 2024-04-15 10:22:24 · 1341 阅读 · 0 评论 -
C语言介绍约束满足问题(Constraint Satisfaction Problems, CSPs)
在C语言中,虽然没有直接提供针对约束满足问题(Constraint Satisfaction Problems, CSPs)的内置库或框架,但C语言作为一门低级编程语言,具有足够的灵活性和控制力来实现CSP求解算法。原创 2024-04-14 10:40:18 · 835 阅读 · 0 评论 -
C语言介绍斯特林数与斯特林反演(Stirling Numbers and Stirling Inversion)
斯特林数(Stirling Numbers)是一类重要的数论与组合数学中的特殊数列,它们在统计学、概率论、编码理论、计算机科学等领域有着广泛的应用。斯特林数分为两类:第一类斯特林数(Stirling numbers of the first kind)和第二类斯特林数(Stirling numbers of the second kind)。原创 2024-04-13 10:35:53 · 1229 阅读 · 0 评论 -
C语言介绍Manacher‘s Algorithm(单遍线性时间求解回文子串)
Manacher's Algorithm是一种高效的单遍线性时间算法,用于找出给定字符串中最长的回文子串。该算法由Manacher于1975年提出,因其巧妙地利用回文串的对称性质来避免重复计算,从而将时间复杂度从通常的O(n^2)降低至O(n),其中n是输入字符串的长度。原创 2024-04-12 10:23:49 · 1121 阅读 · 0 评论 -
C语言介绍可行方向法(Feasible Direction Method)
可行方向法(Feasible Direction Method)是一种用于求解约束优化问题的数值方法,尤其是在线性规划(Linear Programming,LP)领域。这种方法主要用于找到在约束条件下目标函数能够改善的方向。在C语言环境中,虽然不能直接编写数学理论,但可以编写程序来实现这种算法的思想。原创 2024-04-10 11:30:01 · 969 阅读 · 1 评论 -
C语言介绍内点法(Interior Point Methods)
内点法(Interior Point Methods, IPM)是一种用于求解线性规划(Linear Programming, LP)、二次规划(Quadratic Programming, QP)及其他凸优化问题的有效算法。该方法通过在可行域内部寻找一系列“内点”(Interior Points),逐步逼近问题的最优解,与传统的单纯形法等边界算法不同,内点法在整个迭代过程中始终保留在可行域内部,避免了单纯形法中的边界的反复穿越。原创 2024-04-09 10:29:27 · 1513 阅读 · 1 评论 -
C语言实现MurmurHash1算法
MurmurHash1是一种快速、非加密型哈希函数,由Austin Appleby于2008年设计。该算法以高效计算和较低碰撞率著称,适用于一般的哈希检索操作。它采用乘法、位移、异或等操作对输入数据进行混淆与混合,生成固定长度(通常是32位)的哈希值。MurmurHash1特别注重在面对规律性强的键时保持良好的随机分布特性,适用于内存表、数据库索引等场景。尽管已有一些更新版本(如MurmurHash3),MurmurHash1仍因其简洁高效而在某些情况下被选用。原创 2024-04-08 10:28:47 · 991 阅读 · 0 评论 -
C语言实现SipHash算法
SipHash是一种快速、安全的短消息摘要算法,由Jean-Philippe Aumasson和Daniel J. Bernstein在2012年提出,主要用于哈希表索引、消息认证码(MAC)等场合,特别针对弱碰撞攻击进行了优化。原创 2024-04-07 09:27:29 · 924 阅读 · 4 评论 -
C语言实现马尔可夫链蒙特卡洛
马尔可夫链蒙特卡洛(MCMC)是一种强大的数值计算方法,用于从难以直接采样的复杂概率分布中抽取样本。它结合了马尔科夫链理论与蒙特卡洛方法,构建一条以目标分布为平稳状态的随机过程。原创 2024-04-06 13:16:11 · 1290 阅读 · 2 评论 -
C语言实现拉斯维加斯算法(Las Vegas Algorithm)算法
拉斯维加斯算法(Las Vegas Algorithm)是一种随机化算法,其特点是总是返回正确的解,但其运行时间(即找到正确解所需的尝试次数)具有一定的不确定性。这类算法在无法保证固定运行时间的情况下,通过增加随机性来提高解决问题的成功概率。原创 2024-04-05 09:50:17 · 1518 阅读 · 2 评论 -
C语言实现Romberg积分算法
Romberg积分算法是一种高精度数值积分方法,通过递归构造并利用积分表中的 Richardson extrapolation 提升近似精度。该算法从简单的梯形法则出发,逐步构建更高阶的求积公式,巧妙结合低阶近似结果,以较小的计算代价获得远高于原始公式的精确度。适用于求解定积分问题,特别适用于被积函数光滑且积分区间有限的情况,能够在保证精度的前提下有效减少计算量。原创 2024-04-04 13:30:43 · 1392 阅读 · 2 评论 -
C语言实现Vector Clocks(版本向量)
在C语言中实现Vector Clocks(版本向量)需要定义一个结构来存储向量时钟,并实现相应的增、删、比较、合并等操作。原创 2024-04-03 12:57:20 · 1009 阅读 · 3 评论 -
C语言实现Brent‘s Method(求函数零点)
Brent's Method是一种高效的数值方法,用于求解实数域上连续函数的实数零点。这种方法结合了二分法、插值法以及黄金分割法的优点,具有快速收敛和稳定性强的特点,适用于函数在指定区间内有唯一实根的情况。原创 2024-04-02 15:15:03 · 1240 阅读 · 1 评论 -
C语言实现龙格-库塔方法(Runge-Kutta Methods)
龙格-库塔方法(Runge-Kutta Methods)是一种用于求解常微分方程(ODEs)的数值积分方法,尤其适用于一阶非线性微分方程组。原创 2024-04-01 13:01:30 · 2533 阅读 · 0 评论 -
C语言实现牛顿迭代法(Newton-Raphson Method)
牛顿迭代法(Newton-Raphson Method)是一种高效的数值方法,用于求解实数域或复数域上非线性方程 f(x)=0 的根。该方法基于函数 f在某一点x_k处的泰勒级数展开,并利用一阶导数 f′(x)近似地构造一条切线,通过切线与 xx-轴的交点来更新估计的根。迭代过程持续进行,直至达到预定的精度要求。原创 2024-03-31 11:54:18 · 4503 阅读 · 0 评论 -
C语言实现随机游走算法(Random Walks)
随机游走算法(Random Walks)是一种基于概率论的数学模型,描述一个对象在离散空间中按照某种随机规则进行步进的过程。原创 2024-03-31 11:15:58 · 2071 阅读 · 0 评论 -
C语言实现半定规划(Semidefinite Programming, SDP)算法
半定规划(Semidefinite Programming, SDP)是一种优化问题的数学模型,它扩展了线性规划的概念,允许在约束条件和目标函数中包含半正定矩阵的性质。在C语言编程环境中,虽然C语言本身并不直接支持半定规划的求解,但可以通过调用相应的数学库或优化工具包来实现半定规划问题的建模和求解。原创 2024-03-31 09:59:59 · 2697 阅读 · 1 评论 -
C语言算法之xxHash算法
xxHash是一种高效、快速的非加密哈希算法,由Yann Collet于2012年开发,因其卓越的速度和低碰撞率而广受欢迎。xxHash特别适用于数据校验、数据索引、哈希表构建等场景,尤其在处理大数据时表现优异。原创 2024-03-30 10:06:58 · 2585 阅读 · 0 评论 -
C语言算法之舍伍德算法
舍伍德(Sherwood)算法是一种随机化算法,用于解决特定问题,如线性时间选择问题(在未排序的数组中找到第k小(大)的元素)。由于您提到的资料并未提供舍伍德算法的详细实现,而且互联网上关于“舍伍德算法”的信息相对较少且不一致,这里无法直接提供一个完整的C语言版本的舍伍德算法实现。不过,根据已有的信息,我们可以讨论如何在C语言中实现一个类似的随机化线性时间选择算法,通常这类算法会借鉴快速排序中的划分思想,并对划分基准的选择进行随机化处理。原创 2024-03-30 09:51:37 · 1670 阅读 · 0 评论 -
C语言算法之CART决策树算法
CART(Classification and Regression Trees,分类与回归树)是一种决策树学习方法,用于建立分类模型或回归模型。原创 2024-03-29 13:08:11 · 1470 阅读 · 2 评论 -
C语言经典算法之布隆过滤器(Bloom Filter)
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能存在于集合中,但可能出现一定的误判率(false positive)。原创 2024-03-29 12:45:42 · 1043 阅读 · 0 评论 -
C语言经典算法之Naive Bayes分类器
Naive Bayes分类器是一种基于贝叶斯定理和特征条件独立假设的统计分类模型原创 2024-03-29 12:21:09 · 1161 阅读 · 0 评论 -
C语言经典算法之ElGamal加密算法
ElGamal加密算法是一种非对称加密算法,基于Diffie-Hellman密钥交换协议,并利用了离散对数问题的困难性。原创 2024-03-29 12:05:38 · 1611 阅读 · 0 评论 -
C语言经典算法之岛屿数量统计算法
在C语言中,计算二维矩阵中岛屿数量的经典算法通常采用深度优先搜索(DFS)或广度优先搜索(BFS)。原创 2024-03-29 11:52:53 · 1579 阅读 · 1 评论 -
C语言入门:编译与运行Hello World程序
使用GCC(GNU Compiler Collection)编译C源代码的基本流程非常直观,下面是一个简洁的教程原创 2024-03-28 12:29:01 · 786 阅读 · 0 评论 -
C语言经典算法之零钱兑换问题
在计算机编程中,零钱兑换问题通常是一个经典的动态规划问题,但这里我会以简化的方式来介绍如何使用C语言来解决这一问题。假设我们有一个数组代表各种面额的硬币(如[1, 5, 10, 25]),目标是要找出最少数量的硬币来凑够某个特定金额(如37元)。原创 2024-03-28 10:50:05 · 1892 阅读 · 9 评论 -
C语言经典算法之Karatsuba大数乘法
Karatsuba大数乘法是一种快速的乘法算法,由Anatolii Alexeevich Karatsuba于1960年提出,适用于大整数的乘法运算。该算法基于分治策略,将原本需要三次乘法和一次加法的传统算法复杂度降低到了大约两次乘法和三次加法,降低了乘法操作次数,从而提高了计算效率。原创 2024-03-28 10:38:45 · 1963 阅读 · 0 评论 -
C语言经典算法之后缀自动机
在C语言中实现后缀自动机(Suffix Automaton,简称SAM)通常涉及构建一种特殊的有向无环图(DAG),该图能够紧凑地表示一个字符串的所有后缀。原创 2024-03-27 10:27:32 · 946 阅读 · 4 评论 -
C语言经典算法之八数码难题
八数码难题(也称为滑动拼图游戏或十五拼图游戏的一种变形)是一个经典的组合优化问题,它在一个3x3的网格上进行,网格上有8个数字块和一个空白格子。每个数字块可以在空格相邻的上下左右四个方向上进行移动,目标是通过一系列这样的移动操作,将最初乱序排列的数字块按照特定的顺序排列。原创 2024-03-27 10:14:24 · 2010 阅读 · 0 评论 -
C语言经典算法之凯撒加密
凯撒加密(Caesar Cipher)是一种简单的替换式加密方法,由古罗马的朱利斯·凯撒首先使用,因此得名。它是通过将明文中每个字母按照字母表向后(或向前)移动固定数量的位置来实现加密。原创 2024-03-26 11:25:49 · 2847 阅读 · 22 评论 -
C语言经典算法之洗牌算法
在C语言中实现经典的洗牌算法,我们通常指的是Fisher-Yates(也称为Knuth-Shuffle)算法。该算法保证了随机均匀打乱一个数组中的元素顺序。原创 2024-03-26 10:49:00 · 1827 阅读 · 0 评论 -
C语言经典算法之Strassen矩阵乘法
Strassen矩阵乘法是一种利用分治策略优化传统矩阵乘法算法的方法,由Volker Strassen于1969年提出。这种方法通过递归地将矩阵分解成更小的块,并运用特定的公式减少乘法操作的数量,从而降低了计算大型矩阵乘积的时间复杂度。然而,由于分治和合并过程引入了额外的开销,对于较小的矩阵,Strassen算法可能不如直接乘法有效率。原创 2024-03-26 10:31:21 · 1529 阅读 · 1 评论 -
C语言经典算法之介绍IDA*算法
IDA*(Iterative Deepening A*)算法是一种结合了A算法和深度优先搜索(DFS)思想的启发式搜索算法。它解决了A算法在面对深而窄的搜索空间时,可能因为需要存储大量节点而导致内存溢出的问题。IDA*通过迭代加深的方式逐步扩大搜索深度,每次只探索到当前设定的最大深度,没有找到解时就增加最大深度,继续搜索。原创 2024-03-25 10:28:53 · 2892 阅读 · 28 评论 -
C语言经典算法之Z-Algorithm(Z-Score算法)
Z-Algorithm(也称Z-Score算法)是一种在线性时间内计算给定字符串的所有后缀与其自身最长公共前缀长度的高效算法。原创 2024-03-25 10:06:18 · 1446 阅读 · 8 评论 -
C语言经典算法之期望-最大算法
在C语言中实现期望最大化(Expectation-Maximization, EM)算法的具体代码会相当复杂,因为它涉及到具体的概率模型和迭代过程。原创 2024-03-24 10:30:26 · 2247 阅读 · 0 评论 -
C语言经典算法之Kosaraju算法
Kosaraju算法是用来寻找有向图的强连通分量的一种线性时间复杂度算法。原创 2024-03-24 10:19:34 · 1760 阅读 · 1 评论 -
C语言经典算法之Euclidean算法求最大公约数
在C语言中,使用欧几里得算法(Euclidean Algorithm)求两个正整数的最大公约数(Greatest Common Divisor, GCD)可以通过连续做除法和取余操作实现。原创 2024-03-23 09:41:05 · 1637 阅读 · 4 评论