【发布时间】:2017-05-27 23:50:03
【问题描述】:
这是一个小数学/编码问题。
我正在尝试找出在 Int 数组中插入 Int 的最佳方法,以使数组按数字顺序最低到最高的正确索引。
一种方法是循环遍历数组,只要索引 +1 > 我的数字而不是在索引处插入它。
我想知道是否有任何快速的方法。
类似:
let index = array.index(where: { ($0 < number && $1 > number) } )
我不能在闭包中添加两个参数...
有什么想法吗?
【问题讨论】:
-
不是真正的“Swifty”方法,但您可以使用
NSOrderedSet,假设您的号码是唯一的。 -
为什么不直接将它添加到数组中,而不是删除数组?就性能而言,这不应该比找到正确的索引并将其插入那里更糟糕,因为必须移动更高索引处的所有值。
-
从算法上讲,您需要通过二分搜索找到插入点。这样,如果您的数组有 1024 个项目,则您可以通过 ~10 比较来识别插入点,而如果您按顺序搜索,则平均为 512。