その謎のアルゴリズムが何をするのかを見つけなければなりませんでした。一種であることはわかっていますが、正式な名前は見つかりません。
その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]
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) ...
そしてほら!並べ替えました。名前はありますか?