Je vais à travers quelques-uns des algorithmes de tri communs et ont écrit ceci:défaut de l'algorithme de tri d'insertion dans le code Java
code:
public void insertionSort() {
int key;
int i;
for (int j = 1; j < this.a.length; j++) {
key = a[j];
i = j;
while (i > 0 && a[i-1] > key) {
a[i] = a[i-1];
i = i - 1;
}
a[i] = key;
}
}
Résultat:
[email protected]:~/Dropbox/programming/java/algorithms$ javac sort.java
[email protected]:~/Dropbox/programming/java/algorithms$ java Test
49, 68, 60, 14, 70, 8, 83, 96, 29, 7, 92, 35, 17, 84, 31, 62, 48, 95, 16, 22, 31, 97, 72, 55, 88, 63, 1, 63, 96, 32, 74, 15, 92, 77, 50, 13, 12, 36, 90, 93, 20, 15, 67, 88, 23, 31, 95, 90, 86, 65, 35, 27, 60, 4, 90, 11, 22, 97, 65, 88, 23, 1, 25, 21, 9, 81, 87, 56, 2, 4, 63, 52, 55, 86, 62, 30, 55, 64, 19, 10, 45, 92, 87, 43, 39, 95, 20, 43, 3, 30, 74, 64, 4, 90, 91, 93, 94, 44, 87, 21,
49, 1, 1, 2, 3, 4, 4, 4, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 19, 20, 20, 21, 21, 22, 22, 23, 23, 25, 27, 29, 30, 30, 31, 31, 31, 32, 35, 35, 36, 39, 43, 43, 44, 45, 48, 50, 52, 55, 55, 55, 56, 60, 60, 62, 62, 63, 63, 63, 64, 64, 65, 65, 67, 68, 70, 72, 74, 74, 77, 81, 83, 84, 86, 86, 87, 87, 87, 88, 88, 88, 90, 90, 90, 90, 91, 92, 92, 92, 93, 93, 94, 95, 95, 95, 96, 96, 97, 97,
Execution took: 110628 nano sek?
Comme vous pouvez le voir lors des tests, la première valeur n'est pas affectée par le tri. Quel est le problème avec mon algorithme?
Notez que dans la première boucle commençant par 'int j = 0' dans une imprécision. Pensez-y .. Aussi, je réfèrerais 'j' à 'index' et 'i' à 'précédent' – Gevorg
** EDIT: ** Le code en question ci-dessus est fixé. – realPK