Алгоритм сортировки слабо сопоставимых данных?

Допустим, у меня есть несортированный список из четырех объектов: [B, C, A, D] .

Все четыре объекта одного типа, и:

  (A > B),
  (C > D),
  (A != C or D)
  (B != C or D)
  (C != A or B)
  (D != A or B).

Под ! = я имею в виду, что они не меньше, ни равны, ни больше, чем другие объекты.

Мне нужно «отсортировать» список так, чтобы всегда будет предшествовать B , а C всегда будет предшествовать D . Помимо этих двух требований, я не требую упорядочивания списка; поэтому, учитывая ранее описанный список, функция сортировки должна возвращать либо [A, B, C, D] , либо [C, D, A, B] .

Как по причине этой проблемы я пытаюсь отсортировать массив объектов java.lang.Class на основе их отношений друг с другом. Например, если A является суперклассом / суперинтерфейсом B , то A меньше, чем B . Если A расширяет / реализует B , то A больше, чем B . Если A равно B , то, очевидно, A равно B . В противном случае, A совершенно несопоставим с B.

5
задан double-beep 9 February 2019 в 19:01
поделиться