gpt4 book ai didi

java - 如何有效地对 int 数组进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:29 24 4
gpt4 key购买 nike

我有一个整数数组

int array[] = ...

我可以使用

对其进行排序
Arrays.sort(array);

但 Arrays.sort 使用快速排序,这有时会导致 O(n^2) 复杂度。我有一个想法将它转换为 List 然后对其进行排序(使用合并排序,因此上限是 O(n log n)),但缺点是它创建了很多对象,因为从 int 到 Integer 的装箱。

我的第三种方法是:

array = Arrays.stream(array).sorted().toArray();

我只在 IntStream 上操作,但不幸的是文档中没有提到复杂性。

我一直在寻找类似的问题,但我只找到了这个 Big-O complexity of java.util.stream.Stream<T>.sorted()这根本没有帮助,因为有两个不同的答案(第一个当然是部分错误的,因为 Arrays.sort 并不总是 O(n log n))。第二个呢?我还没有找到证据。

最佳答案

你应该调查Heapsort ,虽然稍微慢一点,但它保证了 O(n Log n)。 Quicksort vs heapsort

还有课本解释here .

关于java - 如何有效地对 int 数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com