list - 如何对 DList 进行排序?
问题描述
如何就地对 DList 和 SList 进行排序?
在 Python 中我们可以做 list.sort(),在 Java 中 - Collections.sort(linkedList, new Comparator ...)
我不知道如何在 D 中做同样的事情。
解决方案
对链表进行排序是低效的,这就是为什么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
}
或使用某物。本质上像堆或 RBTree 一样排序:
import std.algorithm, std.container, std.stdio;
void main()
{
auto list = DList!int(2, 1, 3);
list[].redBlackTree[].writeln;
}
推荐阅读
- javascript - 如何在回调函数中访问全局范围变量?[JS]
- ios - 将标签和按钮添加到 UICollectionView xcode 9,swift 4
- swift - 无法使具有标识符 cellId 的单元出列 - 必须为标识符注册一个 nib 或一个类,或者在情节提要中连接一个原型单元
- python - python Time.clock太短的结果
- c# - C# 将 Form1 的 PictureBox 图像更改为 Form2 中 OpenFileDialog 图像选择中的图像
- php - 数据库数据不插入
- python - 生成固定大小的numpy数组的随机子样本
- typescript - TypeScript:如何优化 compile-bundle-reload 周期?
- node.js - Nodejs Flash 消息仅在页面刷新后加载(connect-flash)
- java - 我们如何获得集群中并发活动流的数量?