gpt4 book ai didi

java - 插入排序复杂度可以降低到 O(nlogn) 吗?

转载 作者:行者123 更新时间:2023-11-30 03:54:16 31 4
gpt4 key购买 nike

我想知道通过在 java 中使用 BinarySearch 和 ArrayLists 是否可以将 InsertionSOrt 的复杂性从 O(n2) 降低到 O(nlogn)。

最佳答案

有两件事导致插入排序的复杂度为 O(n2):

1) 搜索要替换的元素的适当位置 - 每次迭代的时间复杂度为 O(n)。使用二分查找可以将其降低至 O(log n)。

2) 一旦找到正确的位置,则将大于(或小于)元素的元素向右移动。在最坏的情况下,您将在列表的前面插入一个元素,这需要将排序列表中的所有剩余元素向右移动 - 最坏的情况是每次迭代 O(n)。

因此使用二分搜索和 ArrayList 的总复杂度是:

O(n * n + n * log n)

关于java - 插入排序复杂度可以降低到 O(nlogn) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645913/

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