Die kürzlich beliebte [Sterling Sort](https://qiita.com/tags/Sterling Sort), Die veröffentlichte Java-Implementierung verwendet eine for-Schleife, die keine Erweiterung ist. Ich dachte, es sei eine prähistorische Sache, weil ich den Komparator nicht übergeben konnte, also fing ich an, ihn selbst zu schreiben. Ich hatte eine schlechte Fahrt auf dem Weg und dachte darüber nach, nicht nur für, sondern auch für zu binden, aber es stellte sich als seltsamer Code heraus.
Derzeit dient es auch als Gedenkgottesdienst
public static <T extends Comparable<? super T>> List<T> stalinSort(List<T> origin) {
return stalinSort(origin, Comparator.naturalOrder());
}
public static <T> List<T> stalinSort(List<T> origin, Comparator<? super T> comparator) {
return origin.stream().reduce(new LinkedList<T>(),
(prev, current) -> Comparator.nullsFirst(comparator).compare(prev.peekLast(), current) <= 0
&& prev.add(current) ? prev : prev,
(a, b) -> {
throw new UnsupportedOperationException();
});
}
Vielleicht funktioniert es.
Recommended Posts