![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++算法详解及源码
用C和C++,实现算法,算法以求全为终极目标。主攻:数据结构与算法,每篇博文的源代码,百分之百编译,链接,运行都通过,该专栏目标最少六百多篇博文,专栏注重实战和理论。这是世上最全C语言和C++算法教程了
猿来如此yyy
希望我的博客,能帮上你解决学习中工作中所遇到的问题
展开
-
C/C++ Pigeonhole sort鸽巢排序算法详解及源码
鸽巢排序算法(Pigeonhole sort)是一种简单的排序算法,适用于某个范围内的整数排序。它通过创建一个与待排序数组大小相同的鸽巢数组,将数组的元素映射到鸽巢数组中,最后按照鸽巢数组的顺序将元素放回原数组,从而实现排序。鸽巢排序算法的优点是简单易懂,且对于某个范围内的整数排序效果较好。然而,该算法的缺点是需要额外的空间存储鸽巢数组,且无法处理非整数数据类型。对于较大的数据范围,鸽巢数组的大小也会变得很大,使得算法的空间复杂度增加。原创 2024-06-03 13:25:33 · 613 阅读 · 0 评论 -
C/C++ gnome sort 侏儒排序算法详解及源码
Gnome Sort(侏儒排序)是一种简单的排序算法,通过比较相邻的元素并进行交换,将较大的元素推到正确的位置上,类似于冒泡排序。它的原理是将当前元素与前一个元素进行比较,如果满足条件则交换它们,并向前移动一个位置,否则向后移动一个位置。最终,所有元素都将按照正确的顺序排列。Gnome Sort的优点是它非常简单和直观,实现起来也很容易。它的时间复杂度为O(n^2),因此对于较大的数据集,它的效率较低。与其他更优化的排序算法相比,Gnome Sort通常被用于教学或简单问题的解决。原创 2024-06-03 13:18:39 · 541 阅读 · 0 评论 -
C/C++ Odd Even Sort奇偶排序算法详解及源码
Odd Even Sort(奇偶排序算法)是一种并行排序算法,它可以通过多个线程或多个处理器同时进行比较和交换,从而提高排序的效率。它的基本思想是将待排序的元素分为奇数位置和偶数位置两个子序列,然后分别对两个子序列进行比较交换,直到序列有序。原创 2024-06-03 13:23:54 · 504 阅读 · 1 评论 -
C/C++ Insertion Sort插入排序算法详解及源码
Insertion Sort(插入排序)算法是一种简单直观的排序算法,它将数组分为已排序和未排序两部分,每次将未排序部分的第一个元素插入到已排序部分的正确位置上。插入排序算法的时间复杂度为O(n^2),空间复杂度为O(1)。原创 2024-06-03 13:20:22 · 528 阅读 · 0 评论 -
C/C++ 非递归合并排序算法详解及源码
然而,非递归合并排序算法的缺点在于它需要额外的辅助数组来存储合并后的结果,增加了空间复杂度。此外,对于较大数组的排序,非递归合并排序算法可能需要较多的迭代次数和额外的空间。非递归合并排序算法的优点是效率高,不需要进行递归的函数调用,避免了函数栈的开销,同时利用循环迭代进行合并操作,减少了递归过程中的子问题划分和合并的次数。非递归合并排序算法是一种基于迭代的排序算法,与递归的合并排序算法相比,它使用循环迭代来实现合并操作,避免了递归的函数调用开销。原创 2024-06-03 13:22:20 · 670 阅读 · 1 评论 -
C/C++ Comb Sort梳排序算法详解及源码
Comb Sort梳排序算法是一种改进的冒泡排序算法,它通过对相距较远的元素进行比较和交换来提高排序的效率。该算法的基本思想是通过比较相邻的元素,如果它们的顺序不正确就交换它们,直到所有的元素都按照正确的顺序排序。与冒泡排序不同的是,Comb Sort会首先通过一个较大的间隔进行比较和交换,然后逐渐缩小这个间隔,直到最后变成1,此时算法表现为传统的冒泡排序。原创 2024-06-03 13:15:06 · 633 阅读 · 0 评论 -
C/C++ radix sort基数排序算法详解及源码
以上示例代码中,桶的遍历顺序是从大到小的,这样可以确保相同数字的顺序不变,如果遍历顺序是从小到大,则可能改变相等元素之间的相对顺序。另外,基数排序的时间复杂度是线性的,即O(k*n),其中k是数字的位数,n是数据的个数,不论数据的范围有多大,都能在相同的时间复杂度下进行排序。排序算法的时间复杂度:基数排序算法的时间复杂度是O(k*n),其中k是数字的位数,n是数据的个数。输入数据的取值范围:基数排序算法对待排序数据的取值范围有一定要求,如果范围过大,可能会导致桶的数量非常庞大,内存不够用。原创 2024-06-04 09:55:55 · 406 阅读 · 0 评论 -
C/C++ counting sort计数排序算法详解及源码
Counting Sort(计数排序)是一种非比较排序算法,它根据待排序元素的值来确定每个元素的位置。计数排序的核心思想是统计每个元素出现的次数,然后根据次数依次将元素放置到正确的位置上。原创 2024-06-03 13:16:54 · 349 阅读 · 0 评论 -
C/C++ Heap Sort堆排序算法详解及源码
Heap Sort(堆排序)是一种基于二叉堆的排序算法,它将待排序的元素构建成一个二叉堆,然后依次将堆顶元素与最后一个元素交换,并对前面的元素重新调整为堆,从而实现排序。原创 2024-06-03 13:19:29 · 482 阅读 · 0 评论 -
C/C++ pancake sort煎饼排序算法详解及源码
煎饼排序算法的优点是它是一种原地排序算法,不需要额外的存储空间,只需对原始列表进行翻转操作。并且,它具有较好的平均和最坏情况时间复杂度,可达到O(n^2)。煎饼排序算法(Pancake Sort)是一种用于排列排序问题的算法。它通过重复进行翻转操作将列表中的元素逐步移动到正确的位置。然而,煎饼排序算法的缺点是它的实现过程较为复杂,涉及到多次翻转操作。在最坏情况下,翻转操作的次数可能非常多,导致算法的效率较低。原创 2024-06-03 13:24:49 · 571 阅读 · 0 评论 -
C/C++ cycle sort循环排序算法详解及源码
Cycle sort是一种循环排序算法,用于对一个数组进行排序。它的特点是每次都将一个元素通过循环移动到它应该在的位置,直到所有的元素都在正确的位置上。下面是Cycle sort的工作原理:遍历数组,对每一个元素进行处理。将当前元素放到它应该在的位置上,通过不断的循环交换操作。例如,如果当前元素应该在索引i上,那么我们就将它和索引i上的元素进行交换,然后将索引i上的元素继续移动到它应该在的位置上,直到已经存在一个元素占据了它的位置为止。重复步骤2,直到所有的元素都在正确的位置上。Cycle s原创 2024-06-03 13:17:45 · 633 阅读 · 0 评论 -
C/C++ Quick sort快速排序算法详解及源码
Quick sort(快速排序)是一种常用的排序算法,它的基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小,然后再对这两部分数据分别进行快速排序。通过递归的方式将所有数据排序完成。原创 2024-06-03 13:26:26 · 612 阅读 · 3 评论 -
C/C++ library Sort库排序算法详解及源码
Library Sort算法的基本思想是通过预处理数据,将待排序的序列分成许多小的块,并对每个块进行排序。然后,通过插入排序算法对这些有序的块进行合并,最终得到整个序列的有序结果。Library Sort库排序算法是一种改进的插入排序算法,它自动选择合适的插入位置,可以提高插入排序的效率。原创 2024-06-03 13:21:21 · 611 阅读 · 0 评论 -
C/C++ Numerical string sort数字字符串排序算法详解及源码
Numerical string sort是一种用于排序数字字符串的算法。它将数字字符串按照数值大小进行排序,而不是按照字符的字典序进行排序。下面将详细解释Numerical string sort算法的实现原理、优缺点,并给出一个使用C语言实现该算法的示例程序。原创 2024-06-03 13:23:05 · 497 阅读 · 0 评论 -
C/C++ Selection Sort选择排序算法详解及源码
Selection Sort的优点是实现简单,无论数据量多少,算法的时间复杂度都为O(n^2),稳定性不受影响。在小规模数据排序时,相比其他复杂的排序算法(如快速排序、归并排序),Selection Sort的性能相对较好。Selection Sort(选择排序)是一种简单的排序算法。它的基本思想是将待排序的序列分为已排序区和未排序区,每次从未排序区选择最小(或最大)的元素,放到已排序区的末尾,直到全部元素排序完成。此外,由于其时间复杂度为O(n^2),在大规模数据排序时,效率较低。原创 2024-06-04 14:17:17 · 375 阅读 · 0 评论 -
C/C++ Merge Sort排序算法详解及源码
Merge Sort(归并排序)是一种经典的分治排序算法,它将一个待排序的数组分成两个子数组,分别对子数组进行排序,然后再将排好序的子数组进行合并,从而得到最终的有序数组。原创 2024-06-03 13:16:08 · 417 阅读 · 0 评论 -
C/C++ Hash Search哈希搜索算法详解及源码
Hash Search(哈希搜索)算法是一种基于哈希表的查找算法。哈希表是一种以键-值对形式存储数据的数据结构,它通过将键映射为一个索引来快速定位值的位置。哈希搜索算法通过将待查找的关键字映射为哈希表的索引,从而加快查找的速度。原创 2024-06-04 14:24:12 · 680 阅读 · 0 评论 -
C/C++ 螺旋形的矩阵算法详解及源码
螺旋形的矩阵算法是一种用于按照螺旋形顺序遍历矩阵的算法。这种算法按照顺时针方向从矩阵的外圈开始,逐层遍历直至矩阵的中心。在每一层上,遍历顺序是从左到右、从上到下、从右到左和从下到上。螺旋形的矩阵算法的优点是可以按照螺旋形顺序遍历矩阵,遍历结果直观清晰,易于理解。同时,该算法的时间复杂度是O(n^2),其中n表示矩阵的边长,时间复杂度相对较低。然而,螺旋形的矩阵算法也存在一些缺点。首先,实现该算法的代码较为复杂,很容易出现逻辑错误。其次,在处理边界条件时需要格外小心,以保证算法的正确性。原创 2024-06-05 14:12:37 · 461 阅读 · 1 评论 -
C/C++ 数字是否为质数的函数算法详解及源码
质数是指大于1并且只能被1和自身整除的数。原创 2024-06-05 14:18:51 · 380 阅读 · 0 评论 -
C/C++ Exponential search指数搜索算法详解及源码
Exponential search(指数搜索)是一种用于在有序数组中进行搜索的算法。它结合了二分查找和线性查找的优点,可以在数组大小未知的情况下进行高效的搜索。原创 2024-06-04 15:01:30 · 668 阅读 · 2 评论 -
C/C++ Interpolation search插值搜索算法详解及源码
Interpolation search(插值搜索)是一种改进的二分搜索算法,它适用于已排序且均匀分布的数据集。与二分搜索算法相比,插值搜索算法的关键差异在于它根据搜索键的值来估计要查找的位置。该算法假设数据集是线性分布的,因此可以根据数据集的最大值和最小值来计算与搜索键的可能位置之间的比例。原创 2024-06-04 14:22:46 · 417 阅读 · 0 评论 -
C/C++ Binary search二分法检索(折半检索)算法详解及源码
Binary search,也称为二分法检索或折半检索,是一种高效的搜索算法,用于在有序数组或列表中查找目标元素的位置。它的思想是,将查找区间逐渐缩小为原来的一半,直到找到目标元素或查找区间为空为止。原创 2024-06-05 09:24:48 · 437 阅读 · 0 评论 -
C/C++ sparse matrix 稀疏矩阵算法详解及源码
稀疏矩阵算法(sparse matrix)是一种用于处理大多数元素为零的矩阵的算法。在稀疏矩阵中,非零元素的数量远远小于矩阵的总元素数。稀疏矩阵算法的目标是以更少的存储空间和计算复杂度来表示和操作这些矩阵。原创 2024-06-05 14:15:05 · 407 阅读 · 0 评论 -
C/C++ smallest circle 获取外接给定点集的最小圆的中心和半径算法详解及源码
smallest circle (最小圆) 算法是一种用于找到能够覆盖给定点集的最小圆的算法。该算法的基本思想是,通过迭代地增加圆的半径,来找到一个能够覆盖所有点的最小圆。然而,最小圆问题属于计算几何问题,对于大规模点集,算法的运行时间可能较长。而且,该算法的实现在处理重复点和共线点时可能存在问题,因此需要在实现时注意处理这些特殊情况。原创 2024-06-05 14:17:06 · 361 阅读 · 0 评论 -
C/C++ Linear search线性搜索算法详解及源码
Linear search(线性搜索)是一种简单直观的搜索算法,通过逐一比较数据元素和目标值,查找并返回目标值在数据集中的位置。Linear search适用于无序数据集合,并且适用于任何数据类型。原创 2024-06-04 14:21:08 · 544 阅读 · 0 评论 -
C/C++ Pascal‘s Triangle杨辉三角算法详解及源码
Pascal’s Triangle(杨辉三角)是一个数学算法,用于产生一个由数字组成的三角形,数字的排列遵循一定的规律。原创 2024-06-05 14:21:17 · 571 阅读 · 0 评论 -
C/C++ Jump Search跳转搜索算法详解及源码
Jump Search(跳转搜索)是一种在有序数组中搜索特定元素的算法。Jump Search的思想是先确定一个步长m,然后从数组的起始位置开始按照步长m进行搜索。当找到一个比目标元素大的元素时,就回退到上一个步长,然后在这个步长范围内进行线性搜索。这样可以减少线性搜索的次数,提高搜索效率。原创 2024-06-04 14:21:50 · 665 阅读 · 0 评论 -
C/C++ Bogo Sort猴子排序算法详解及源码
Bogo Sort,也称为猴子排序算法,是一种无脑且低效的排序算法。它的原理是将待排序的元素随机打乱,然后检查是否已经排好序,如果没有,就再次随机打乱,重复这个过程直到排序完成。原创 2024-06-04 14:18:36 · 425 阅读 · 0 评论 -
C/C++ ternary search三元搜索算法详解及源码
ternary search是一种用于在有序数组中进行搜索的算法。它通过将数组分成三个部分来进行搜索,以确定目标元素所在的位置。原创 2024-06-04 14:19:37 · 544 阅读 · 0 评论 -
C/C++ 打印STAIRS 图案算法详解及源码
打印STAIRS图案算法是一种用字符打印出阶梯状图案的算法。原创 2024-06-05 14:03:08 · 463 阅读 · 0 评论 -
C/C++ Addition rule of probabilities概率加法法则算法详解及源码
概率加法法则是概率论中的一个基本原理,用于计算多个事件的联合概率。它适用于互不相容的事件,即这些事件不能同时发生。其中,P(A or B)表示事件A或事件B发生的概率,P(A)表示事件A发生的概率,P(B)表示事件B发生的概率。概率加法法则的优点是简单易懂,适用于互不相容的事件。缺点是不能用于计算同时发生的事件,只适用于计算事件的联合概率。原创 2024-06-05 13:25:53 · 388 阅读 · 1 评论 -
C/C++ median search中位数搜索算法详解及源码
中位数搜索算法是一种用于在一组数据中找到中位数的算法。中位数是指将一组数据按照大小排序后,位于中间位置的数值。如果数据个数为奇数,则中位数为排序后的中间值;如果数据个数为偶数,则中位数为排序后中间两个数的平均值。中位数搜索算法的优点是在一组数据中找到中位数的时间复杂度较低,可以在O(n)的时间内完成。另外,该算法不需要对数据进行全局排序,只需要对数据进行局部排序即可,因此在处理大规模数据时效率优于全局排序算法。然而,中位数搜索算法的缺点是需要占用额外的存储空间来存储排序后的数据。原创 2024-06-04 14:20:26 · 356 阅读 · 0 评论 -
C/C++ fibonacci search斐波那契搜索算法详解及源码
斐波那契搜索算法(Fibonacci search)是一种用来在有序数组中查找特定元素的搜索算法。它使用斐波那契数列来确定搜索范围,通过比较目标元素与数组中斐波那契数列的值,来决定向前搜索还是向后搜索。原创 2024-06-04 14:25:43 · 472 阅读 · 0 评论 -
C/C++ Postfix Expression 后缀表达式的评估算法详解及源码
后缀表达式(也被称为逆波兰表达式)是一种数学表达式的表示方法,其中运算符在操作数的后面。原创 2024-06-05 14:20:09 · 446 阅读 · 0 评论 -
C/C++ Bayes‘ theorem贝叶斯定理算法详解及源码
其中,P(A|B)表示在事件B发生的条件下事件A发生的概率,P(B|A)表示在事件A发生的条件下事件B发生的概率,P(A)和P(B)分别表示事件A和事件B的概率。贝叶斯定理(Bayes’ theorem)是一种用于计算条件概率的数学定理,它基于先验概率和后验概率之间的关系。原创 2024-06-05 13:24:51 · 563 阅读 · 1 评论 -
C/C++ Tower of Hanoi汉诺塔算法详解及源码
Tower of Hanoi,也称为汉诺塔,是一个经典的递归问题。问题的背景是有三根柱子,其中一根上有从小到大依次摆放的n个圆盘。Tower of Hanoi算法的基本思想是将n个圆盘看成两个部分,第一个部分是最底下的一个圆盘,第二部分是上面的n-1个圆盘。这样,就完成了将n个圆盘从起始柱子移动到目标柱子的任务。原创 2024-06-05 13:27:10 · 489 阅读 · 1 评论 -
C/C++ 十进制数转换为二进制表示算法详解及源码
十进制数转换为二进制表示算法通常使用除2取余法来实现。原创 2024-06-06 11:41:43 · 496 阅读 · 1 评论 -
C/C++ 二个数组求交集算法详解及源码
【代码】C/C++ 二个数组求交集算法详解及源码。原创 2024-06-06 11:47:13 · 451 阅读 · 0 评论 -
C/C++ 获取链表的大小算法详解及源码
获取链表的大小算法的优点是简单明了,只需要遍历链表一次,时间复杂度为O(n),n为链表的节点数量。另外,该算法适用于单向链表,对于双向链表或循环链表,需要根据具体情况进行相应的修改。缺点是需要遍历整个链表,如果链表很长,获取链表的大小算法的时间复杂度可能会比较高。获取链表的大小算法,即计算链表中节点的数量。可以通过遍历链表的方式来实现。原创 2024-06-06 11:48:08 · 410 阅读 · 0 评论 -
C/C++ 线性回归算法详解及源码
线性回归是一种常用的预测和建模算法,用于建立自变量(特征)和因变量之间的线性关系模型。拟合直线:使用线性方程 y = mx + b 来拟合数据,其中m是斜率,b是截距。线性回归算法的目标是找到最佳的m和b,使得拟合直线与数据点的误差最小。损失函数:常用的损失函数是均方误差(MSE),它是实际值与预测值之间差异的平方的平均值。数据准备:从数据集中选择自变量和因变量的数据,并进行预处理,例如去除异常值、缺失值处理和归一化处理。参数估计:使用最小二乘法来估计参数m和b的值,最小化损失函数。原创 2024-06-07 09:41:57 · 578 阅读 · 0 评论