J'ai travaillé dessus toute la journée et je ne sais pas pourquoi cela ne fonctionne pas. Le tri est en train de dupliquer certains éléments et de trier certains éléments du tableau, mais je ne vois pas ce qui en est la cause. Je ai essayé de le tracer, mais je ne pouvais pas le suivre.Fusionner Trier en Java ne fonctionne pas comme prévu. Essayer de le faire sans boucle while
import java.io.FileNotFoundException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
int[] array = new int[10];
for(int i = 0; i < array.length; i++) {
array[i] = (int) (Math.random()*5);
}
int[] temp = array.clone();
int l = 0;
int r = array.length-1;
System.out.println("unsorted "+Arrays.toString(array));
mergeSort(array, temp, l, r);
System.out.println("sorted "+Arrays.toString(array));
}
public static void mergeSort(int[] array, int[] temp, int p, int r) {
int q = (p + r)/2;
if(p < r) {
mergeSort(array, temp, p, q);
mergeSort(array, temp, q+1, r);
merge(array, temp, p, q, r);
}
}
public static void merge(int[] array, int[] temp, int p, int q, int r) {
int i = p;
int j = q + 1;
for(int k = p; k < r; k++){
if(i > q){
array[k] = temp[j];
j++;
} else if(j > r) {
array[k] = temp[i];
i++;
}
else if(temp[j] < temp[i]) {
array[k] = temp[j];
j++;
} else {
array[k] = temp[i];
i++;
}
}
}
}
« questions visant à obtenir l'aide de débogage (» pourquoi est-ce pas le code de travail ») doit comprendre le comportement souhaité, un problème spécifique ou d'une erreur et le code le plus court nécessaire pour reproduire dans la question elle-même. Les questions sans énoncé de problème clair ne sont pas utiles aux autres lecteurs. Voir: [MCVE] " – pvg
Notez que l'étape de copie peut être évitée en changeant la direction de fusion en fonction de la passe pour bottom up, ou du niveau de récursion pour top down.Pour top down une paire de fonctions mutuellement récursives peut être utilisée pour changez la direction de la fusion. [Exemples du thread précédent] (https://stackoverflow.com/questions/46106922/mergesort-algorithm-whats-the-better-implementation-in-java/46107386#46107386) – rcgldr