J'essaie de comprendre tous les algorithmes de tri, voici le code que j'ai écrit pour le tri par fusion mais il ne fonctionne pas, pouvez-vous m'indiquer ce qui ne va pas :
solve : fonction (A) { let count = this.mergeSort(A); nombre de retours ; }, mergeTwoSortedArrays : fonction (A, B) { soit je = 0 ; soit j = 0 ; soit k = 0 ; soit C = []; while (i < A.length && j < B.length && A[i] || B[j]) { si (A[i] < B[j]) { C[k] = UNE[je]; je++; k++; } autre { C[k] = B[j]; j++; k++; } } tandis que (j &Lt ; B.longueur) { C[k] = B[j]; k++; j++; } tandis que (je &Lt ; A.length) { C[k] = UNE[je]; k++; je++; } retourner C ; }, mergeSort : fonction (a) { soit n = a.length; si (n <= 1) renvoie un ; soit c = Array.from({ longueur : Math.floor(n / 2) }, (_, i) => a[i]); soit d = Array.from({ length: n - c.length }, (_, i) => a[c.length + i]); renvoie this.mergeTwoSortedArrays(c, d); }D'accord, la question m'oblige à ajouter plus de détails pour obtenir l'approbation. Mon approche est donc la suivante : divisez le tableau en deux parties égales jusqu'à ce qu'elles deviennent un tableau d'un élément, puis utilisez une technique de fusion pour fusionner les deux tableaux triés.
Vous devez simplement vérifier i < A.length && j <
Voici votre code mis à jour :