算法比较彼此相距一定距离的数字

时间:2012-01-27 21:24:18

标签: iphone

所以我有一组看起来像

的数字
1,708,234
2,802,532
11,083,432
5,098,123
5,777,111

我想知道两个数字之间是否在一定距离内(比如说1,500,000),所以我可以将它们分组到同一个位置,只有一个UI元素代表我正在看的缩放级别。如何巧妙或有效地做到这一点。我想我只是从第一个条目开始,遍历所有元素,如果一个接近另一个,标记这两个并将它放在某种字典中。那将是我的蛮力方法,但我认为必须有更好的方法。

如果做出或破坏任何设计决定,我正在用obj-c bw编码。

1 个答案:

答案 0 :(得分:3)

我们在这处处理多少个号码?如果它足够小:

  1. 对数字进行排序(通常为n-log-n)
  2. 遍历每个数字n,并比较其较大的邻居n + 1,看看它是否在您的范围内。
  3. 重复n + 2,n + 3,直到数字不再在您的范围内。
  4. 你的暴力方法有O((n / 2)^ 2)。这种方法将在平均情况下将其带到O(n + n log(n))或O(n log n)。