在对数组执行操作之前,我们是否应该始终对其进行排序



因此,在许多情况下,当对数组执行操作(如二进制搜索或设置操作(时,排序数组总是更快。例如,合并两个排序的数组需要O(m+n(或O(n(作为一个变量,而两个未排序的数组则需要O(n^2(。有了它的优势,我们是否应该在对数组执行操作之前对其进行排序?

To总是主动排序通常会使后续操作更快,但您仍然会花费时间和资源对初始数组进行排序。

如果您的逻辑涉及可能受益于排序的下游计算,那么您应该尝试在逻辑流的早期对输入数组进行一次排序,以便所有函数重用相同的排序实例。

如果排序然后执行函数所花费的时间明显少于使用未排序数组执行函数所花的时间,那么您可能会认为强制函数先排序有好处。

问题是,如果函数不断对已经排序的同一个数组实例进行排序,那么通过将排序全部消除,可以获得一些性能提升。

如果您的函数涉及的操作在排序数组中表现更好,那么您应该指定输入参数排序数组,(在c#中,您可以使用SortedList(然后您已经向调用方声明需要它们提前处理排序。

相关内容

最新更新