J'étudie ce livre depuis hier et après avoir compris et appliqué le premier algorithme, j'ai essayé d'aller seul et de regarder différemment. Voici, en Java, l'algorithme montré:Pourquoi mon algorithme de tri est-il plus rapide que celui de "Introduction to Algorithms" de H.Cormen?
public static int[] sort(int[] array)
{
for(int i = 1; i < array.length; i++){
int value = array[i];
int j = i - 1;
while(j >= 0 && array[j] > value){
array[j + 1] = array[j];
j--;
}
array[j+1] = value;
}
return array;
}
Et voici le mien:
public static int[] sortb(int[] array)
{
for(int i = 0; i < array.length; i++){
int value = array[i];
int j = i;
while(j < array.length && value > array[j]){
array[j] = array[j + 1];
j++;
}
array[j] = value;
}
return array;
}
Pour 1 million d'appel de fonction pour chacun, je suis arrivé 32 ms pour le premier et 25 ms pour la deuxième . Je commence toujours avec des algorithmes, donc je n'ai aucune idée de la signification.
Cela n'a pas vraiment de sens. Je passerais plus de temps à me concentrer sur les algorithmes et moins sur la mesure de leur vitesse. Si vous ne savez pas comment faire des mesures correctement, vous pouvez obtenir toutes sortes de résultats et perdre votre temps à essayer de trouver un sens là où il n'y a pas de sens. – Kayaman
@FarazDurrani Je suis à peu près sûr que lorsque les professeurs enseignent des algorithmes, ils sont plus intéressés par le 'Big O' que les millisecondes obtenues par de mauvaises mesures. – Kayaman
Je ne travaille pas avec le professeur, mais sur mon propre – Despirithium