【问题标题】:What is test best sorting algorithm for a Doubly LinkedList什么是双向链表的测试最佳排序算法
【发布时间】:2009-10-19 02:55:19
【问题描述】:

有人可以为我的自定义链接列表+示例推荐一种排序算法,基本上它类似于通用链接列表,所以如果你可以为通用链接列表提供示例,那就太好了。

我正在计划实现归并排序,由于我对任何算法都不是很熟悉,所以请就优缺点提出建议,只是从谷歌那里汲取了归并排序算法的想法。

仅在可能的情况下提供 c# 示例:)

干杯

【问题讨论】:

    标签: c# .net algorithm sorting linked-list


    【解决方案1】:

    合并排序是个好主意,因为与其他高级排序不同,它不需要可索引性(因此它在链表和数组上都可以正常工作)。 C# 中的一般介绍是 here——它不使用泛型,并且无用地引入了数组列表和索引,在这些地方事情可以通过迭代很好地进行,但我找不到 C# 中正确完成的基本介绍。

    所有高级排序算法的一个警告是,在递归中,最好不要一直使用“高级算法”,而是切换到更简单的算法以获得足够小的子列表 - 简单算法的大-O,但乘法常数更小,因此混合通常是最佳的。

    一个有价值的变体是natural mergesort,它利用了数据中可能已经存在的运行——我给出的 URL 使用了伪代码,但它的可读性很强。自然归并排序非常适合已经大部分排序但有一些项目乱序的数据,例如附加在最后——当少数项目确实很少时,它可以提供渐近 O(N) 性能;-)。

    【讨论】:

      【解决方案2】:

      我在link text找到了一个不错的 c# 排序实现

      【讨论】:

        【解决方案3】:

        这听起来很像家庭作业。维基百科有一些很好的伪代码供您开始使用。

        至于哪种算法最好,这取决于内存限制、处理能力、样本大小、数据类型等等。没有“最好”的算法(尽管有最差的算法。冒泡排序有人吗?)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-04
          • 1970-01-01
          • 2017-05-11
          • 2010-09-07
          • 1970-01-01
          • 2018-05-22
          相关资源
          最近更新 更多