Quelle méthode pour appeler à l'intérieur de la méthode TimSort?
Question
TimSort est un algorithme qui sera utilisé par défaut dans Java 7 pour le tri.
Je trouve cette source, mais je ne comprends pas quelle méthode appeler puisque tous sont privés. Quelqu'un peut-il comprendre? Merci.
La solution
Vous n'appelez pas quoi que ce soit.
Il a des méthodes de tri qui sont package privé à java.util
. Vous laissez les appeler lorsque vous appelez la fonction Arrays.sort()
ou quelque chose comme ça.
Ceci est clairement le commentaire:
/*
* The next two methods (which are package private and static) constitute
* the entire API of this class. Each of these methods obeys the contract
* of the public method with the same signature in java.util.Arrays.
*/
static <T> void sort(T[] a, Comparator<? super T> c) {
sort(a, 0, a.length, c);
}
static <T> void sort(T[] a, int lo, int hi, Comparator<? super T> c) {
...
}
A en juger par le temps de mon dernier commentaire, cela a pris moins de 15 minutes pour le faire:
- http://pastebin.com/VNyUutiD - SortTest.java
- http://pastebin.com/deGAfWZj - TimSort.java
Et le résultat:
C:\Documents and Settings\glowcoder\My Documents>java SortTest
Time for default: 4094ms
Time for timsort: 3813ms
C:\Documents and Settings\glowcoder\My Documents>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow