http://pt.wikipedia.org/wiki/Merge_sort#Java Ce code ne compile pas.Est-ce que quelqu'un sait comment réparer ce Tri Merge?
Merci.
http://pt.wikipedia.org/wiki/Merge_sort#Java Ce code ne compile pas.Est-ce que quelqu'un sait comment réparer ce Tri Merge?
Merci.
Voici une implémentation de travail de http://rosettacode.org/wiki/Merge_sort#Java, liée à l'article de Wikipédia en anglais sur le tri par fusion.
import java.util.LinkedList;
public class Merge<E extends Comparable<? super E>> {
public LinkedList<E> mergeSort(LinkedList<E> m){
if(m.size() <= 1) return m;
int middle= m.size()/2;
LinkedList<E> left= new LinkedList<E>();
for(int i= 0;i < middle;i++) left.add(m.get(i));
LinkedList<E> right= new LinkedList<E>();
for(int i= middle;i < m.size();i++) right.add(m.get(i));
right= mergeSort(right);
left= mergeSort(left);
LinkedList<E> result= merge(left, right);
return result;
}
public LinkedList<E> merge(LinkedList<E> left, LinkedList<E> right){
LinkedList<E> result= new LinkedList<E>();
while(!left.isEmpty() && !right.isEmpty()){
//change the direction of this comparison to change the direction of the sort
if(left.peek().compareTo(right.peek()) <= 0) result.add(left.remove());
else result.add(right.remove());
}
result.addAll(left);
result.addAll(right);
return result;
}
}
Vous devez l'inclure dans une définition de classe et l'appeler dans une méthode principale. Ensuite, il sera à la fois compiler et exécuter.
non ils ne veulent pas: P – Seva
Il y a une erreur de portée en utilisant posicao
dans l'appel à System.arraycopy
. Déclarer cette variable au début de la méthode mesclar
(plutôt que dans la boucle for en bas) l'amènera à compiler, mais cela ne signifie pas nécessairement que la logique est bonne. De même, les instructions if imbriquées à l'intérieur de cette boucle for ne peuvent pas être utilisées pour une affectation comme celle-ci. Les opérateurs ternaires imbriqués feraient l'affaire, mais bonne chance que quelqu'un d'autre le comprenne. Au lieu de cela, l'affectation à vetor[inicio + posicao]
doit être dupliquée dans chaque bloc if.
C'est un exemple de code .... ne prenez pas cela comme une classe entièrement mis en œuvre. –
Je ne le prenais pas comme une classe entièrement implémentée. Il échoue juste comme un échantillon de code. – gdejohn
"Ne compile pas" est une description d'erreur insuffisante. En outre, Wikipedia anglais a deux liens vers des implémentations Java (d'OpenJDK en fait). –
Dans tous les cas, je vous suggère d'utiliser l'Arrays.sort() intégré à moins que ce soit des devoirs. ;) –
lesquels svp? répondre comme suit: D – Seva