Во многих случаях красные деревья неплохо подходят для сортировки. Мое тестирование показало, что по сравнению с естественной сортировкой слиянием красно-черные деревья превосходят где:
Деревья лучше для дупс:
Во всех тестах, где должны быть устранены ошибки, алгоритм дерева лучше. Это не удивительно, поскольку с самого начала дерево может быть очень маленьким, в результате чего алгоритмы, предназначенные для сортировки встроенных массивов, могут обойти большие сегменты в течение более длительного времени.
Деревья лучше для рандома:
Все тесты со случайным алгоритмом дерева лучше. Это также не удивительно, так как в дереве расстояние между элементами короче и смещение не требуется. Поэтому для многократной вставки в дерево может потребоваться меньше усилий, чем для сортировки массива.
Таким образом, у нас создается впечатление, что естественная сортировка слиянием превосходит только в возрастающих и убывающих особых случаях. Что нельзя сказать даже для быстрой сортировки.
Суть с тестами здесь .
П.С .: Следует отметить, что использование деревьев для сортировки нетривиально. Нужно не только предоставить подпрограмму вставки, но также подпрограмму, которая может линеаризовать дерево обратно в массив. В настоящее время мы используем get_last и подпрограмму предшественника, которой не требуется стек. Но эти процедуры не являются O (1), так как они содержат циклы.