Questions tagged «algorithm»

算法是定义明确的问题解决方案的一系列明确定义的步骤。当您的问题与算法设计有关时,请使用此标签。

14
选择用于学习数据结构和算法的编程语言[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 3年前关闭。 改善这个问题 的编程语言,你会推荐学习有关数据结构和算法吗? 考虑以下内容: 个人经验 语言功能(指针,OO等) 适用于学习DS和A概念 我问是因为那里有一些与编程语言无关的书(从数学角度编写,并使用伪代码)。如果我从其中一种中学到东西,那么我想选择一种编程语言来编写代码并运行算法。 然后,还有其他书籍介绍了DS&A概念,并以特定的编程语言编写了示例-我也想对这些算法进行编码-因此,在某种程度上,该语言也很适合。 无论哪种方式,我都必须选择一种语言,并且我希望始终坚持使用一种语言。撇开个人语言偏好,哪个最适合此目的?

1
说明用于最终一致性的默克尔树
默克尔树在多个分布式,复制的键/值存储中用作反熵机制: 发电机 里亚克 卡桑德拉 毫无疑问,反熵机制是一件好事-生产中会发生短暂故障。我只是不确定我是否理解为什么默克尔树是流行的方法。 将完整的Merkle树发送给对等方包括将本地密钥空间与每个键值的哈希值一起存储到该对等方,该哈希存储在树的最低级别中。 区分从对等方发送的Merkle树需要拥有自己的Merkle树。 由于双方都必须已经有一个排序的键/值哈希空间,为什么不进行线性合并来检测差异呢? 我只是不相信在考虑维护成本时,树形结构可以提供任何形式的节省,并且已经完成了在树叶上进行线性传递的事实,只是将导线上的表示序列化。 为了解决这个问题,一个稻草人的选择可能是让节点交换哈希摘要的数组,这些哈希摘要通过模环位置进行增量更新和存储。 我想念什么?

7
大集合中有效查找汉明距离低的二进制字符串
问题: 给定一个大的(约1亿个)无符号32位整数列表,一个无符号32位整数输入值以及最大汉明距离,请返回输入值指定汉明距离内的所有列表成员。 持有清单的实际数据结构是开放的,性能要求决定了内存中的解决方案,构建数据结构的成本是次要的,查询数据结构的低成本至关重要。 例: For a maximum Hamming Distance of 1 (values typically will be quite small) And input: 00001000100000000000000001111101 The values: 01001000100000000000000001111101 00001000100000000010000001111101 should match because there is only 1 position in which the bits are different. 11001000100000000010000001111101 should not match because 3 bit positions are different. 到目前为止,我的想法是: 对于汉明距离为0的简并情况,只需使用排序列表并对特定输入值进行二进制搜索。 …

24
在经过排序和旋转的数组中搜索
在准备面试时,我偶然发现了一个有趣的问题: 您将得到一个经过排序然后旋转的数组。 例如: 让arr = [1,2,3,4,5]排序 将其向右旋转两次以给出[4,5,1,2,3]。 现在,如何最好地在此排序后的旋转数组中进行搜索? 可以取消旋转数组,然后进行二进制搜索。但这并不比在输入数组中进行线性搜索更好,因为两者都是最差情况的O(N)。 请提供一些指示。我为此搜索了很多特殊算法,但找不到任何算法。 我了解C和C ++。
79 c++  c  arrays  algorithm 

14
用于计算5星级的算法
我需要像亚马逊网站上那样计算5星级。我已经进行了足够的搜索以找到最佳的算法,但是我找不到正确的答案。例如,如果这些是评分 5 star - 252 4 star - 124 3 star - 40 2 star - 29 1 star - 33 共478条点评 亚马逊计算得出这是“ 5星中的4.1星”。谁能告诉我这个数字是怎么得出的?我不能仅仅通过平均来得到这个。

8
N路合并算法
作为Mergesort算法的一部分,广泛研究了2路合并。但是我有兴趣找出执行N路合并的最佳方法吗? 可以说,我有一些N文件,每个文件都排序了100万个整数。我必须将它们合并到1个单个文件中,该文件将具有1亿个排序整数。 请记住,此问题的用例实际上是基于磁盘的外部排序。因此,在实际情况下也将存在内存限制。因此,一次(99次)合并2个文件的幼稚方法将不起作用。可以说,每个数组只有一个很小的可用内存滑动窗口。 我不确定该N路合并是否已有标准化的解决方案。(谷歌搜索并没有告诉我太多)。 但是,如果您知道一个好的n路合并算法,请发布算法/链接。 时间复杂度:如果我们大大增加了N要合并的文件()的数量,这将如何影响算法的时间复杂度? 感谢您的回答。 在任何地方都没有问过我这个问题,但是我觉得这可能是一个有趣的面试问题。因此加了标签。
79 algorithm  merge 

22
您将如何编写程序以生成Haiku?[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 计算机Haiku 您将如何编写程序 来为您制作程序
78 algorithm 


6
集群数量未知的无监督集群
我在3维中有大量的向量。我需要基于欧几里得距离对它们进行聚类,以使任何特定聚类中的所有向量之间的欧几里得距离均小于阈值“ T”。 我不知道有多少集群。最后,可能存在不属于任何群集的单个矢量,因为对于空间中的任何矢量,其欧氏距离均不小于“ T”。 在此应使用哪些现有算法/方法?

13
检测波浪中的图案
我正在尝试从心电图读取图像并检测其中的每个主要波(P波,QRS复波和T波)。现在,我可以读取图像并得到一个代表(4.2; 4.4; 4.9; 4.7; ...)的矢量,代表心电图中的值,这是问题的一半。我需要一种算法,该算法可以遍历此向量并检测何时每个波开始和结束。 这是其中一个图表的示例: 如果它们始终具有相同的大小,则很容易,但是它不起作用,或者我知道心电图会产生多少波,但它也可以变化。有人有想法吗? 谢谢! 更新中 我要实现的示例: 鉴于浪潮 我可以提取向量 [0; 0; 20; 20; 20; 19; 18; 17; 17; 17; 17; 17; 16; 16; 16; 16; 16; 16; 16; 17; 17; 18; 19; 20; 21; 22; 23; 23; 23; 25; 25; 23; 22; 20; 19; 17; 16; 16; …

7
最佳的图像缩小算法是什么(质量方面)?
我想找出哪种算法最适合用于缩小光栅图片。最好,我的意思是给出最佳外观的产品。我知道双三次,但是还有更好的东西吗?例如,我从某些人那里听说Adobe Lightroom具有某种专有算法,该算法比我使用的标准双三次方产生更好的结果。不幸的是,我想在自己的软件中自己使用该算法,因此Adobe谨慎保护的商业机密将无法实现。 添加: 我检出了Paint.NET,令我惊讶的是,缩小图片时,超级采样比双三次采样更好。这让我想知道插值算法是否完全可行。 这也让我想起了自己“发明”但从未实现的算法。我想它也有一个名字(因为这个琐碎的东西不能仅凭我一个主意),但是我在流行的名字中找不到它。超级采样是最接近的一种。 想法是这样的-对于目标图片中的每个像素,计算它在源图片中的位置。它可能会覆盖一个或多个其他像素。然后可以计算这些像素的面积和颜色。然后,要获得目标像素的颜色,只需简单地计算这些颜色的平均值,然后将它们的面积添加为“权重”。因此,如果目标像素覆盖黄色源像素的1/3和绿色源像素的1/4,我将得到(1/3 *黄色+ 1/4 *绿色)/(1/3 + 1/4)。 这自然会占用大量计算资源,但应尽可能接近理想值,不是吗? 这个算法有名字吗?

7
快速素数分解模块
我正在寻找一种实现或清晰的算法,以获取python,伪代码或任何其他易于理解的N的素数分解。有一些要求/事实: N在1到〜20个数字之间 没有预先计算的查找表,虽然可以做备忘录。 无需经过数学证明(例如,如果需要,可以依赖于哥德巴赫猜想) 不必很精确,如果需要,可以是概率/确定性的 我需要一种快速的素数分解算法,不仅针对其本身,而且还需要用于许多其他算法中,例如计算Euler phi(n)。 我尝试了Wikipedia上的其他算法,但是我无法理解它们(ECM),或者无法从该算法创建有效的实现方式(Pollard-Brent)。 我对Pollard-Brent算法真的很感兴趣,因此任何有关它的信息/实现都将非常不错。 谢谢! 编辑 经过一番摸索之后,我创建了一个非常快速的质数/因数分解模块。它结合了优化的试验划分算法,Pollard-Brent算法,米勒-拉宾素数检验和我在互联网上找到的最快的素数筛。gcd是常规的Euclid的GCD实现(二进制Euclid的GCD比常规的慢得多)。 赏金 哦,喜悦,可以获得赏金!但是我怎么能赢呢? 在我的模块中找到优化或错误。 提供替代/更好的算法/实现。 最完整/最有建设性的答案将得到赏金。 最后是模块本身: import random def primesbelow(N): # http://stackoverflow.com/questions/2068372/fastest-way-to-list-all-primes-below-n-in-python/3035188#3035188 #""" Input N>=6, Returns a list of primes, 2 <= p < N """ correction = N % 6 > 1 N = {0:N, 1:N-1, 2:N+4, …

7
“最后100个字节”的采访场景
前几天,我在一次采访中遇到了这个问题,想知道一些可能的最佳答案(我回答得不太好哈哈): 场景:有一个网页正在监视通过某个网络发送的字节。每次发送一个字节时,都会调用recordByte()函数来传递该字节,每天可能发生数十万次。此页面上有一个按钮,当按下该按钮时,将在屏幕上显示传递给recordByte()的最后100个字节(通过调用下面的print方法来执行此操作)。 以下是我被要求填写的代码: public class networkTraffic { public void recordByte(Byte b){ } public String print() { } } 存储100个字节的最佳方法是什么?一个列表?好奇如何最好地做到这一点。
78 java  algorithm 

20
解释此片段,该片段不使用if-else或任何其他比较运算符就可以找到两个整数的最大值?
查找两个数字的最大值。您不应使用if-else或任何其他比较运算符。我在在线公告板上发现了这个问题,所以我认为我应该在StackOverflow中询问 示例输入:5、10输出:10 我找到了这个解决方案,有人可以帮我理解这些代码行吗 int getMax(int a, int b) { int c = a - b; int k = (c >> 31) & 0x1; int max = a - k * c; return max; }


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.