Nous comptons le nombre de lectures et d'écritures d'éléments de tableau. Pour faire du tri à bulles, vous avez besoin de accès (l'écriture initiale jusqu'à la fin, puis, dans le pire des cas, deux lectures et deux écritures pour effectuer n échanges). Pour faire la recherche binaire, nous avons besoin de 2 log n + 2 n + 1 ( 2 log n pour la recherche binaire, puis, dans le pire des cas, 2 n pour décaler les éléments du tableau vers la droite, puis 1 pour écrire l'élément du tableau dans sa position correcte).1+4nn2logn+2n+12logn2n
Ainsi, les deux méthodes ont la même complexité pour les implémentations de tableaux, mais la méthode de recherche binaire nécessite moins d'accès aux tableaux à long terme ... asymptotiquement, deux fois moins. Il y a naturellement d'autres facteurs en jeu.
En fait, vous pouvez utiliser de meilleures implémentations et ne compter que les accès réels aux tableaux (pas les accès à l'élément à insérer). Vous pouvez faire pour le tri à bulles et enregistrer n + 2 n + 1 pour la recherche binaire ... donc si l'accès au registre / cache est bon marché et l'accès au tableau est cher, la recherche depuis la fin et le déplacement en cours de route (plus intelligent tri à bulles pour l'insertion) pourrait être mieux, mais pas asymptotiquement.2 n + 1bûchen + 2 n + 1
Une meilleure solution pourrait impliquer l'utilisation d'une structure de données différente. Les tableaux vous donnent des accès O (1) (accès aléatoire), mais les insertions et les suppressions peuvent coûter cher. Une table de hachage pourrait avoir O (1) insertions et suppressions, les accès coûteraient. D'autres options incluent les BST et les tas, etc. Il pourrait être utile de considérer les besoins d'utilisation de votre application pour l'insertion, la suppression et l'accès, et choisissez une structure plus spécialisée.
Notez également que si vous souhaitez ajouter éléments à un tableau trié de n éléments, une bonne idée pourrait être de trier efficacement les m éléments, puis de fusionner les deux tableaux; aussi, les tableaux triés peuvent être construits efficacement en utilisant par exemple des tas (tri par tas).mnm