这是一个小数学/编码问题。
我正在试图找出在Ints数组中以正确的索引插入Int的最佳方法,该数组的数字顺序是最低的。
一种方法是循环遍历数组,并且只要索引+1>比我的号码要多,而不是在索引处插入。
我想知道是否有任何一种狡猾的方式。
类似的东西:
let index = array.index(where: { ($0 < number && $1 > number) } )
我不能在闭包中添加两个参数......
有什么想法吗?
答案 0 :(得分:1)
只要数组开始为空或保持排序,以下代码就可以将新数字插入正确的位置:
var ints = [3,6,9,15,20]
var num = 12
ints.insert(num, at: ints.index(where: {$0 > num}) ?? ints.endIndex)
print(ints)
num = 2
ints.insert(num, at: ints.index(where: {$0 > num}) ?? ints.endIndex)
print(ints)
num = 24
ints.insert(num, at: ints.index(where: {$0 > num}) ?? ints.endIndex)
print(ints)
输出:
[3,6,9,12,15,20]
[2,3,6,9,12,15,20]
[2,3,6,9,12,15,20,24]
显然你想把它变成一个函数或者把它放在一个扩展中,这样你就不需要继续重复那条线了。