首页 > 解决方案 > 如何对 DList 进行排序?

问题描述

如何就地对 DList 和 SList 进行排序?

在 Python 中我们可以做 list.sort(),在 Java 中 - Collections.sort(linkedList, new Comparator ...)

我不知道如何在 D 中做同样的事情。

标签: listsortingd

解决方案


对链表进行排序是低效的,这就是为什么sort需要随机访问范围作为输入的原因。您可能希望使用具有直接内存访问的数组:

import std.algorithm, std.container, std.stdio;
void main()
{
    auto list = DList!int(2, 1, 3);
    list[].array.sort.release.writeln; // or directly start with an array
}

在 run.dlang.io 上打开

或使用某物。本质上像堆或 RBTree 一样排序:

import std.algorithm, std.container, std.stdio;
void main()
{
    auto list = DList!int(2, 1, 3);
    list[].redBlackTree[].writeln;
}

在 run.dlang.io 上打开


推荐阅读