搜索排序的双链表的算法

时间:2010-03-16 04:49:18

标签: algorithm linked-list search

作为一个学习练习,我刚尝试实现自己的'合并排序'算法。我在std :: list上做了这个,它显然已经内置了函数sort()和merge()。但是,我打算将它移到我自己制作的链表中,所以实现不是特别重要。

问题在于std :: list没有用于访问随机节点的设施,只能访问前/后和单步执行。我最初计划通过这个列表以某种方式执行简单的二进制搜索,并通过几个步骤找到我的答案。

事实上,std :: list中已经内置了用于执行这些排序的函数,这让我相信有一种同样简单的方式以我想要的方式访问列表。

无论如何,感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

链接列表的工作方式是您一次单步执行列表中的项目。根据定义,无法访问列表中的“随机”元素。您引用的Sort方法实际上是通过逐个浏览每个节点并将项目放在正确的位置来创建一个全新的列表。

如果要随机访问数据,则需要以不同方式存储数据。也许是你要存储的一系列元素。

有关链接列表的更多信息:http://en.wikipedia.org/wiki/Linked_list

答案 1 :(得分:3)

合并排序不需要访问随机元素,只需要访问列表一端的元素。