Tag: 算法

C比较两个位图的最快方法

char数组forms有两个位图数组,有数百万条记录。 什么可能是使用C比较它们的最快方法。 我可以想象在for循环中一次使用按位运算符xor 1个字节。 关于位图的重点: 算法运行的时间为1%到10%,位图可能不同。 大多数时候他们都是一样的。 当嘿可以不同时,它们可以高达100%。 连续条纹中的位变化概率很高。 两个位图的长度相同。 目标: 检查它们是否有所不同,如果是,则在哪里。 每次都是正确的(如果有的话,检测错误的概率应为1)。

在c中对双向链表进行排序

我想在插入元素时按排序顺序保留链表(列表中大约200000个元素),您可以推荐哪种算法? 我使用插入排序做了一个简单的实现,但它的性能非常糟糕(很多CPU使用率)。 谢谢你的帮助。 我在合并排序和插入排序之间进行了一些比较,但似乎插入排序具有更好的性能,我对这个结果有点困惑。 你能告诉我什么是错的,是否有更好的算法? 我的代码(为简单起见,我省略了节点结构中的prev节点): struct node { int number; struct node *next; }; 插入排序: void insert_node(int value) { struct node *new_node = NULL; struct node *cur_node = NULL; struct node *last_node = NULL; int found; /* 1 means found a place to insert the new node in, 0 means not*/ new_node = (struct […]

圆形厚度绘图算法

目前我正在使用Bresenham的圆绘制算法,它可以精确地绘制圆圈,但是我想要一种相对快速有效的方法来绘制具有指定厚度的圆(因为Bresenham的方法只绘制单个像素厚度)。 我意识到我可以简单地绘制具有不同半径的多个圆圈,但我相信这将是非常低效的(并且效率很重要因为这将在Arduino上运行,其中每微秒都是珍贵的)。 我目前正在使用以下代码: void circle(byte xc, byte yc, int radius, Colour colour) { int x = -radius, y = 0, err = 2 – 2 * radius; while(x < 0) { setPixel(xc – x, yc + y, colour); setPixel(xc – y, yc – x, colour); setPixel(xc + x, yc – y, colour); setPixel(xc + y, […]

用于确定给定数量N是否可以成为具有所有3个整数边的直角三角形的斜边的算法

假设您给出了一个直角三角形的斜边,那么如何确定给定的斜边是否有两个可能的小边。 例如,你将斜边视为5.然后你必须确定给定的直角三角形是否有较小的整数边。答案是yes因为我们可以将较小的边用作3和4,因此得到3-4- 5直角三角形。 同样,对于斜边7,我们可以没有这样的直角三角形。 换句话说,我们必须找出给定数字N是否可以作为右三角形的斜边,所有三边都是整数。 我阅读了关于毕达哥拉斯三重奏的整篇文章,但仍然没有成功。我很困惑要检查哪些条件。请帮忙。

如何通过编程方式将照片转换为Polaroid-like?

如何将现代照片转换为宝丽来照片的外观和感觉? 欢迎提供参考和/或示例代码。 谢谢!

斐波那契搜索

有人请解释我的斐波那契搜索算法。 我已经尝试了很多资源并搜索了很多,但算法仍然不清楚。 大多数资源都将其描述为与二进制搜索相关联,但我不理解它们。 我知道斐波纳契搜索算法是二进制搜索的扩展,我很清楚。 我的书也没能解释。 我知道定义为F(n)= F(n-1)+ F(n-2)的斐波纳契数,所以不需要解释。 通过添加我不理解的内容来更新问题@AnthonyLabarre说: 我正在使用的书有奇怪的符号,没有任何解释。 在这里发布算法,请帮忙。 if(key == a[mid]) return mid; // understood this, comes from binary search if(key > a[mid]) { if(p == 1) return -1; // What is p? It comes as a function arg mid = mid + q; //Now what’s this q? Again comes a function […]

在C ++程序中以编程方式检测字节顺序

是否有一种编程方式来检测您是否处于big-endian或little-endian架构? 我需要能够编写将在Intel或PPC系统上执行的代码并使用完全相同的代码(即没有条件编译)。

减去数组

什么是实现数组减法的最快方法? 例如: array a1 = [1, 3, 4, 5, 8]; array a2 = [2, 4, 5]; array a3 = a1 – a2; /* [1, 3, 8] */ 这里的array是我的程序用来表示一个用作容器的结构的类型。 其余部分是伪代码,当然我不会创建像这样的数组也不会减去。 我能想到的最简单的解决方案涉及嵌套循环: /* a1 – a2 */ for (i = 0; i < a1.size; ++i) { int is_the_same = 0; for (j = 0; i < a2.size; […]

如何处理C中的大量数字

我正在用C编写RSA加密算法。我不打算在任何地方投入生产,主要是因为我可以扩展我对加密的理解。 我如何处理RSA产生的大量数字? 即使使用像103这样的相对较小的私钥进行解密,我仍然有处理这样的事情的问题: 67 ^ 103 mod 143 =(1.21816096336830017301951805581 x 10 ^ 188)mod 143 存储多个大小的最佳方法是什么? 有没有办法使用标准库? 。

查找给定数字组中的数字频率

假设我们在C ++中有一个向量/数组,我们希望计算这N个元素中的哪一个具有最大重复出现次数并输出最高计数。 哪种算法最适合这项工作。 例: int a = { 2, 456, 34, 3456, 2, 435, 2, 456, 2} 输出为4,因为2次出现4次。 这是2次发生的最大次数。