Tag: algorithm

过早优化的实用规则

看来,“ 过早优化 ”这个词是当天的stream行词。 出于某种原因,iphone程序员似乎认为避免过早优化作为积极的目标,而不是简单地避免分心的自然结果。 问题是,这个词已经开始被越来越多的应用于完全不合适的案例。 例如,我看到越来越多的人说,不要担心algorithm的复杂性,因为这是过早的优化(例如, 帮助对两个属性(使用NSSortDescriptor?)进行NSArraysorting )。 坦率地说,我认为这只是懒惰,令人</s>然心动的计算机科学。 但是我想到,也许考虑到algorithm的复杂性和性能正在成为组装循环展开的方式,而现在被认为是不必要的其他优化技术。 你怎么看? 我们现在在哪里决定O(n ^ n)和O(n!)复杂度algorithm是不相关的? 那么O(n)和O(n * n)呢? 你认为“过早优化”是什么? 你有意识或不自觉地避免使用哪些实用的规则? 编辑 我知道我的描述有点普遍,但我对特定的实用规则或人们用来避免“过早优化”的最佳实践感兴趣, 特别是在iphone平台上 。 回答这个问题需要你首先回答“什么是先期优化?”的问题。 由于这个定义明显变化很大,任何有意义的答案都需要作者定义这个术语。 这就是为什么我不认为这是一个CW问题。 再次,如果人们不同意,我会改变它。

2-SUM的线性时间algorithm

给定一个整数x和一个有N个不同整数的有序数组a,devise一个线性时间algorithm来确定是否存在两个不同的索引i和j,使得a [i] + a [j] == x

我在JavaScript中的单行实现rot13在哪里出错?

有问题的代码在这里语法突出显示: 通过Friendpaste rot13.js: <script> String.prototype.rot13 = rot13 = function(s) { return (s = (s) ? s : this).split('').map(function(_) { if (!_.match(/[A-Za-z]/)) return _; c = Math.floor(_.charCodeAt(0) / 97); k = (_.toLowerCase().charCodeAt(0) – 96) % 26 + 13; return String.fromCharCode(k + ((c == 0) ? 64 : 96)); }).join(''); }; </script> 正如你所看到的,使用一个简单的方法将一个方法附加到string对象的原型,我有一个我以前设置的map()方法(我确信这个代码是完美的,它只是简单的迭代数组中的每个元素并应用参数中指定的函数)遍历string中的每个字符,并执行我认为是正确的计算,以将string转换为它的rot13对应的string。 我很遗憾错误。 任何人都可以发现我出错的地方吗?

使用Javascript中的Bresenhamalgorithm

我需要一个快速algorithm来计算两点之间的直线坐标。 我试图find好的JavaScript Bresenham实现,但是有太多而且相当混乱的出版物。 在维基百科 – 这里最快和最简单的forms(没有两个方向的分割和误差计算)以伪代码的forms呈现,如下所示: function line(x0, y0, x1, y1) dx := abs(x1-x0) dy := abs(y1-y0) if x0 < x1 then sx := 1 else sx := -1 if y0 < y1 then sy := 1 else sy := -1 err := dx-dy loop setPixel(x0,y0) if x0 = x1 and y0 = y1 exit […]

快速的algorithm实现sorting非常小的列表

这是我很久以前遇到的问题。 我想我可能会问你的想法。 假设我有非常小的数字(整数),4或8个元素,需要sorting,快速列表。 什么是最好的方法/algorithm? 我的方法是使用最大/最小function(10个函数来sorting4个数字,没有分支,iirc)。 // s(i,j) == max(i,j), min(i,j) i,j = s(i,j) k,l = s(k,l) i,k = s(i,k) // i on top j,l = s(j,l) // l on bottom j,k = s(j,k) 我想我的问题更多地涉及到实现,而不是types的algorithm。 在这一点上,它变得有点依赖于硬件,所以让我们假设带有SSE3的Intel 64位处理器。 谢谢

两个列表之间的组合?

已经有一段时间了,我无法绕过我试图制定的一个algorithm。 基本上,我有两个列表,并希望得到这两个列表的所有组合。 我可能不会解释它是正确的,所以这里是一个例子。 name = 'a', 'b' number = 1, 2 在这种情况下的输出将是: 1. A1 B2 2. B1 A2 棘手的部分是我可能比“数字”variables中的项目“名称”variables更多的项目(数字将始终等于或小于名称variables)。 我很困惑如何做所有的组合(嵌套for循环?),甚至更多的逻辑混淆,如果名称中的项目多于数字列表中的项目,则将名称variables中的项目移位。 我不是最好的程序员,但是如果有人能够帮助我澄清逻辑/algorithm来实现这一点,我想我可以试试看。 所以我刚被嵌套for循环。 更新: 这里有3个variables和2个数字的输出: name = 'a', 'b', 'c' number = 1, 2 输出: 1. A1 B2 2. B1 A2 3. A1 C2 4. C1 A2 5. B1 C2 6. C1 B2

STL地图 – >按价值sorting?

我想知道如何实现STL地图按值sorting。 例如,我有一张地图m map<int, int>; m[1] = 10; m[2] = 5; m[4] = 6; m[6] = 1; 然后..我想分类与米的价值。 所以,如果我打印地图,我想要得到的结果 m[6] = 1 m[2] = 5 m[4] = 6 m[1] = 10 这个。 我怎么能这样sorting? 有没有什么办法可以处理与sorting值的关键和价值?

查找未sorting数组的中位数

为了find一个未sorting数组的中位数,我们可以在n个元素的O(nlogn)时间内做一个小堆,然后我们可以逐一提取n / 2个元素来得到中位数。 但是这个方法需要O(nlogn)的时间。 我们可以用O(n)时间的某种方法做同样的事吗? 如果可以的话,请告诉或者提出一些方法。

algorithm在数组中查找两个重复的数字,而不进行sorting

有一个大小为n的数组(数字在0和n – 3之间),只有2个数字重复。 元素随机放置在数组中。 例如在{2,3,6,1,5,4,0,3,5}中n = 9,重复的数字是3和5。 find重复数字的最佳方法是什么? PS [你不应该使用sorting]

发现两个单词是否是对方的字典

我正在寻找一种方法来查找两个string是否是另一个string。 Ex: string1 – abcde string2 – abced Ans = true Ex: string1 – abcde string2 – abcfed Ans = false 我想出的解决scheme是sorting两个string,并比较每个字符从两个string,直到任何string的结尾。这将是O(logn)。我正在寻找其他有效的方法,不会改变2个string进行比较