链接列表需要更长的时间进行排序吗?

lier wu

我突然想到了一个问题,因为get(index)linkedList方法的时间复杂度不是O(1),而是O(N),那么,这会影响排序的时间复杂度吗?例如,下面的代码(冒泡排序):

public static void bubbleSort(int arr[])
{
    int n = arr.length;
    for (int i = 0; i < n-1; i++)
        for (int j = 0; j < n-i-1; j++)
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
}

在执行冒泡排序时,我需要获取元素。在任何排序算法中,都需要获取元素,因此...执行气泡排序时,是否需要平均时间复杂度O(n * log(n)* n)?如果是,当我使用时Collections.sort(linkedList),平均时间复杂度是否也为O(n * log(n)* n)?

屋大维河

这是List.sort(Java 13)的实现

 default void sort(Comparator<? super E> c) {
    Object[] a = this.toArray();
    Arrays.sort(a, (Comparator) c);
    ListIterator<E> i = this.listIterator();
    for (Object e : a) {
        i.next();
        i.set((E) e);
    }
}

如您所见,要排序的列表实现并不重要,其性能几乎相同。

现在,如果我们看一下如何toArray实现,我们将看到以下内容:

链表

public Object[] toArray() {
    Object[] result = new Object[size];
    int i = 0;
    for (Node<E> x = first; x != null; x = x.next)
        result[i++] = x.item;
    return result;
}

数组列表

public Object[] toArray() {
    return Arrays.copyOf(elementData, size);
}

因此,如果您想对LinkedList进行排序,它将比ArrayList慢一点,但幅度不大。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对链接列表进行排序

来自分类Dev

OR子句需要更长的时间

来自分类Dev

更多压缩的PNG图像需要更长的加载时间吗?

来自分类Dev

日期范围较小时,SQL查询需要更长的时间吗?

来自分类Dev

为什么用$ _进行迭代需要更长的时间

来自分类Dev

选择对链接列表进行排序

来自分类Dev

按链接名称对链接列表进行排序

来自分类Dev

对单链接列表进行并行排序

来自分类Dev

使用mergesort对链接列表进行排序

来自分类Dev

在链接列表中对最高编号进行排序

来自分类Dev

对链接列表节点的数组进行排序

来自分类Dev

对单链接列表进行并行排序

来自分类Dev

如何根据姓氏对链接列表进行排序?

来自分类Dev

在链接列表中对最高编号进行排序

来自分类Dev

如何对链接列表中的名称进行排序?

来自分类Dev

R对多个(链接的)列表进行排序

来自分类Dev

下载压缩文件比解压缩文件需要更长的时间吗?

来自分类Dev

使用Python进行线程处理需要花费更长的时间,而不是使其速度更快?

来自分类Dev

在Θ(n)时间对列表进行排序的算法

来自分类Dev

FTP ant上传需要更长的时间

来自分类Dev

多线程变化需要更长的时间

来自分类Dev

mysql还原过程需要更长的时间

来自分类Dev

Group By 与 Join 哪个需要更长的时间?

来自分类Dev

为什么用execute :: par对向量进行排序要比正常排序(gcc 10.1.0)花更长的时间?

来自分类Dev

快速进行性能测试的泡沫排序需要很长时间

来自分类Dev

需要帮助在Swift中按时间戳对结构进行排序

来自分类Dev

为什么在这里通过网络进行文件传输需要花费更长的时间?

来自分类Dev

与通过Web门户进行手动快照相比,使用Endpoint Storage的SL api createSnapshot需要更长的时间?

来自分类Dev

为什么挖掘需要比DNS查询时间更长的时间?

Related 相关文章

  1. 1

    对链接列表进行排序

  2. 2

    OR子句需要更长的时间

  3. 3

    更多压缩的PNG图像需要更长的加载时间吗?

  4. 4

    日期范围较小时,SQL查询需要更长的时间吗?

  5. 5

    为什么用$ _进行迭代需要更长的时间

  6. 6

    选择对链接列表进行排序

  7. 7

    按链接名称对链接列表进行排序

  8. 8

    对单链接列表进行并行排序

  9. 9

    使用mergesort对链接列表进行排序

  10. 10

    在链接列表中对最高编号进行排序

  11. 11

    对链接列表节点的数组进行排序

  12. 12

    对单链接列表进行并行排序

  13. 13

    如何根据姓氏对链接列表进行排序?

  14. 14

    在链接列表中对最高编号进行排序

  15. 15

    如何对链接列表中的名称进行排序?

  16. 16

    R对多个(链接的)列表进行排序

  17. 17

    下载压缩文件比解压缩文件需要更长的时间吗?

  18. 18

    使用Python进行线程处理需要花费更长的时间,而不是使其速度更快?

  19. 19

    在Θ(n)时间对列表进行排序的算法

  20. 20

    FTP ant上传需要更长的时间

  21. 21

    多线程变化需要更长的时间

  22. 22

    mysql还原过程需要更长的时间

  23. 23

    Group By 与 Join 哪个需要更长的时间?

  24. 24

    为什么用execute :: par对向量进行排序要比正常排序(gcc 10.1.0)花更长的时间?

  25. 25

    快速进行性能测试的泡沫排序需要很长时间

  26. 26

    需要帮助在Swift中按时间戳对结构进行排序

  27. 27

    为什么在这里通过网络进行文件传输需要花费更长的时间?

  28. 28

    与通过Web门户进行手动快照相比,使用Endpoint Storage的SL api createSnapshot需要更长的时间?

  29. 29

    为什么挖掘需要比DNS查询时间更长的时间?

热门标签

归档