按数字顺序在数组中插入Int

时间:2017-05-27 23:50:04

标签: arrays swift sorting

这是一个小数学/编码问题。

我正在试图找出在Ints数组中以正确的索引插入Int的最佳方法,该数组的数字顺序是最低的。

一种方法是循环遍历数组,并且只要索引+1>比我的号码要多,而不是在索引处插入。

我想知道是否有任何一种狡猾的方式。

类似的东西:

let index = array.index(where: { ($0 < number && $1 > number) } )

我不能在闭包中添加两个参数......

有什么想法吗?

1 个答案:

答案 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]

显然你想把它变成一个函数或者把它放在一个扩展中,这样你就不需要继续重复那条线了。