排序链表的目的是什么?

时间:2017-05-31 05:35:03

标签: list data-structures linked-list

我想知道排序链表的目的是什么。因为如果需要在未排序的链表和排序的链表中找到元素,则必须执行O(n)。 如果我的问题很愚蠢,请原谅

2 个答案:

答案 0 :(得分:2)

排序的目的并不总是以对数时间进行搜索。显然,排序数据有很多其他应用程序。

假设您必须从大型链表中删除(删除重复元素),并且您没有足够的空间将列表项加载到哈希表中,因为列表非常大。在这种情况下,您可以对列表进行排序并删除连续元素(如果它们相同),从而删除列表。

如果要将元素插入到已排序容器中的适当位置,则排序链表非常方便,这将保证线性时间和恒定的空间复杂度。但对于数组,您需要使用临时数组并逐个移动所有元素。 Infact LRU缓存是一个双重链接列表,并根据最近的项目命中进行排序。最近再次访问的新使用的项目和旧项目被插入到前面以保持已排序的列表的排序。如果在这里使用类似结构的数组,LRU缓存不能提供恒定的复杂度

这只是一些经典的应用程序。你可以找到很多其他的应用程序。

答案 1 :(得分:0)

让我们认为链表用于实现优先级队列。我们可以随机添加不同优先级的元素,但是我们希望根据优先级处理队列的元素,维护已排序的链表以便优先级最高的项出现在开头,并从中删除它们会很有用。队列是一个简单的操作。这不是对列表进行精确排序,但是当插入项目时,它将根据优先级放置在其正确的位置。这类似于数组的插入排序。