想象一下,我有以下两个数组:
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
无论如何,它会告诉编译器“与array2不同,您需要一个一个地查找所有索引,array1已经排序,因此可以节省时间并执行binarySearch”
可能类似于:
array1.index(of : 9, isSorted : true)
array2.index(of : 9, isSorted : false)
答案 0 :(得分:1)
不。但是您可以自己实现它。
原则上,Array
可以实现为自动管理。它可能有一个isSorted
标志,该标志默认情况下是为一个空数组设置的,在违反排序顺序的操作完成时重置,并在调用sort
时设置。然后,对于排序后的数据,具有更佳实现的任何函数都可以根据需要检查此标志,并执行优化算法或通用算法。
但是,我怀疑这样的簿记(几乎由所有操作支付)的成本将超过有限的收益(仅由某些操作带来的收益)。