代码之家  ›  专栏  ›  技术社区  ›  mfaani

有没有办法通知编译器数组已排序,以便更快地进行搜索[[副本]

  •  -2
  • mfaani  · 技术社区  · 6 年前

    let array1 = [1,4,6,9,12,18]
    let array2 = [6,9,4,18,12,1]
    

    现在我想找到 9

    array1.index(of:9) // 3
    array2.index(of:9) // 1
    

    可能是这样的:

    array1.index(of : 9, isSorted : true)
    array2.index(of : 9, isSorted : false)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Alexander    6 年前

    不。但你可以自己实现。

    Array isSorted 标志,默认情况下为空数组设置,在执行违反排序顺序的操作时重置,并在任何时候设置 sort

    然而,我怀疑这种簿记的成本(几乎由所有业务支付)将超过有限的收益(仅由一些业务获得)。