Optimiser le code en Java
Pavlos Kosmetatos
Lead Engineer @Wealthyhood
Notation mathématique décrivant le pire cas.
Quelques classes courantes :
O(1) : Temps constant — indépendant de la tailleO(1) : get() de ArrayListImplémentation interne (simplifiée) d'un ArrayList de Strings :
public class ArrayList {}
private String[] data; // Internal array
private int size;
// Get operation - direct array access
public String get(int index) {
return data[index]; // O(1)
}
}
Notation mathématique décrivant le pire cas
Quelques classes courantes :
O(1) : Temps constant — indépendant de la tailleO(n) : Temps linéaire — croît avec la taille d'entréecontains() de ArrayListpublic boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
// Linear search through array
for (int i = 0; i < size; i++) {
if (o.equals(elementData[i])) {
return i;
}
}
return -1; // Not found
}
Notation mathématique décrivant le pire cas
Quelques classes courantes :
O(1) : Temps constant — indépendant de la tailleO(n) : Temps linéaire — croît avec la taille d'entréeO(n²) : Temps quadratique — croît au carré avec la taille d'entrée// Trouver une paire de nombres dont la somme vaut une cible
// Complexité temporelle : O(n²)
public int[] findPairWithSum(ArrayList<Integer> numbers, int targetSum) {
for (int i = 0; i < numbers.size(); i++) {
for (int j = i + 1; j < numbers.size(); j++) {
if (numbers.get(i) + numbers.get(j) == targetSum) {
console.log("Found them!")
}
}
}
}
Effet de la taille d'entrée :
O(1) : 1 000 -> 1 000 000 éléments = Même temps !O(n) : 1 000 -> 1 000 000 éléments = 1 000× plus lentO(n²) : 1 000 -> 1 000 000 éléments = 1 000 000× plus lent
Optimiser le code en Java