我有一个带有纹理索引的元素链表。他们没有分类。我需要他们对它们进行排序,以便纹理索引按顺序升序。我总是可以声明另一个列表并阅读它,但我很想知道如何排序。任何人都有一个建议或链接,我应该从哪里开始/我应该开始寻找这样做的?我也没有使用STL列表。
谢谢!
答案 0 :(得分:2)
对链接列表进行排序可能最好由mergesort(即使对于列表仍为O(n log n)
)提供,因为您没有随机元素访问权限。如果您可以切换到std::list
,list::sort
功能会为您处理。
或者使用非列表容器而不是列表,您可以使用任何排序方法。
答案 1 :(得分:-1)
由于缺乏随机访问,对链接列表进行排序的效率不高。如果您知道列表不会很长,或者如果您能够承担一点额外的复杂性,那么您总是可以使用像冒泡排序这样的简单算法,插入排序会更好。
可能比尝试对链表进行排序更好的另一种方法是将每个新节点插入到正确的位置,以便在添加元素后对列表进行排序。