Мне нужно было найти то, что делает этот тайный алгоритм. Теперь я знаю, что это что-то вроде, но я не могу найти официального имени.У этого вида есть имя?
Вот его Java-код:
for (int i = 0 ; i < myListSize; i++) {
min = Collections.min(myList.subList(i, myListSize));
minIndex = myList.indexOf(min);
Collections.reverse(myList.subList(minIndex, myListSize));
Collections.reverse(myList.subList(i, myListSize));
}
Возьмите этот массив:
[G,E,D,A,F,C,H,I,B]
It 1) ищет мин. элемент, 2) отменит подвариант оттуда и 3) снова перевернет все это:
1) [G,E,D,[A,F,C,H,I,B]]
2) [G,E,D,[B,I,H,C,F,A]]
3) [[A,F,C,H,I,B],D,E,G]
Теперь мин. элемент находится слева. Повторите для остальной части массива:
1) [A] [F,C,H,I,[B,D,E,G]]
2) [A] [F,C,H,I,[G,E,D,B]]
3) [A] [[B,D,E,G],I,H,C,F]
1) [A,B] [D,E,G,I,H,[C,F]]
2) ...
и voilà! Критерий сортировки. У вас есть имя для этого, пожалуйста?
InefficientSort? –
Не совсем понятно, почему он вообще делает разворот. Без этого, это просто сортировка ... –
Похоже, это глупая версия сортировки сортировки, но перестановка подстроки может быть на самом деле быстрее, чем замена двух элементов в некоторой необычной реализации строки (например, DNA: affix reversal = one splice, substring exchange = четыре сращивания) –