创建自己的单链表进行排序

时间:2016-06-01 22:26:01

标签: java singly-linked-list

我试图在java中创建自己的单链表,然后用它来执行排序。 我只能访问第一个节点,而 next 是用于指向下一个节点的指针。 每个节点包含2个字段x和y,它们都是整数。 如何在不使用内置方法的情况下将元素添加到链接列表,并使用快速排序或合并排序对它们进行排序?

1 个答案:

答案 0 :(得分:1)

  

如何在不使用内置方法的情况下将元素添加到链接列表,并使用快速排序或合并排序对它们进行排序?

快速算法(如quicksort和mergesort)取决于是否能够>> index<<被排序的元素数组;即在像a[i] = a[j]这样的操作序列中。使用链表意味着随机索引将是O(N)操作。这可能会将O(N log N)算法转换为O(N^2 log N)算法。

如果你看一下Java的内置排序方法(在不同版本的Java中),你会发现LinkedList的排序是通过以下方式完成的:

  • 将列表复制到临时数组
  • 对数组进行排序,
  • 清除并将阵列复制回列表。

这是对大型链表进行排序的最有效方法。