Эффективно отключите Вид () в CompareTo () переопределение?

CompareTo() метод для моего класса является динамичным, и может колебаться от простого сравнения до сравнений в ряде столбцов. Это все определяется во время выполнения, и это работает отлично.

Но в некоторых случаях, я хочу любую попытку отсортировать набор моих объектов с помощью сравнения по умолчанию, чтобы ничего просто не сделать.

Наличие CompareTo() просто возвратите 0 для любого сравнения, к моему удивлению, не работает. Список перестроен в некотором нечетном, по-видимому-произвольном-порядке.

Есть ли способ выполнить в этом CompareTo() реализация метода? Я не обработал бы это на уровне набора при необходимости переопределить Вид ().

6
задан richardtallent 9 March 2010 в 23:24
поделиться

3 ответа

Это потому, что QuickSort не является стабильной сортировкой . Я не вижу хорошего варианта исправить это в методе CompareTo, если вы не можете каким-то образом получить индекс элемента.

1
ответ дан 17 December 2019 в 22:12
поделиться

Я не доказал это, но в качестве предложения, что, если вы попытаетесь всегда возвращать 1 или всегда -1?

0
ответ дан 17 December 2019 в 22:12
поделиться

Необходимо переопределить Sort () . Реализация по умолчанию Sort () не дает никаких гарантий относительно того, как она будет использовать CompareTo () для получения отсортированной коллекции, поэтому нет никакого способа использовать ее для создания Sort () поступает правильно.

0
ответ дан 17 December 2019 в 22:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: