Envoyé par
zamato
La fusion des deux tableaux, qui sont triés je le rappelle, se fait en O(n).
Si j'appelle tableau de droite, tableau de gauche, et tableau final les deux sous-tableaux et leur fusion :
Pour chaque élément du tableau de droite, on calcule le nombre d'éléments du tableau de gauche qui seront à sa gauche dans le tableau final.
La somme de tout ça est le nombre d'inversion à cheval sur les deux sous-tableaux.
Ah, tu fais réellement le tri du tableau. Je pensais que tu ne faisais que le parcourir, sans toucher aux éléments.
Effectivement, dans ce cas ca fonctionne.
@zamato : Au moment de la fusions, tu n'as pas besoin de parcourir la 2ème sous-liste. En effet, si tu insères un élement 'K' de la liste de droite, ca veut dire que tous les éléments restant de la liste gauche sont supérieurs à 'K'. Et donc il suffit d'augmenter le compteur d'inversion avec la taille restante de la liste gauche.
135 0246 -> {}
135 246 -> {0} --> +3
35 246 -> {0,1}
35 46 -> {0,1,2} --> +2
5 46 -> {0,1,2,3}
5 6 -> {0,1,2,3,4} --> +1
_ 6 -> {0,1,2,3,4,5}
_ _ -> {0,1,2,3,4,5,6} --> +0
Total : 6 inversions
Partager