¿Qué método llamar dentro del método de Timsort?
Pregunta
Timsort es un algoritmo que se utilizará de forma predeterminada en Java 7 para la clasificación.
Encontré esta fuente, pero no entiendo a qué método llamar ya que todos son privados. ¿Alguien puede entender? Gracias.
Solución
No llamas nada.
Tiene métodos de clasificación que son paquetes privados para java.util
. Dejas que los llame cuando llamas al Arrays.sort()
función o algo así.
Esto está claro por el comentario:
/*
* 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 juzgar en el momento de mi último comentario, esto tardó menos de 15 minutos en hacer:
- http://pastebin.com/vnyuutid - sorttest.java
- http://pastebin.com/degafwzj - Timsort.java
Y el resultado:
C:\Documents and Settings\glowcoder\My Documents>java SortTest
Time for default: 4094ms
Time for timsort: 3813ms
C:\Documents and Settings\glowcoder\My Documents>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow