Frage

http://pt.wikipedia.org/wiki/Merge_sort#Java Dieser Code nicht kompiliert werden.

Danke.

War es hilfreich?

Lösung

Hier ist eine Arbeits Implementierung von http://rosettacode.org/wiki/Merge_sort#Java , aus dem englischen Wikipedia-Artikel über Mergesort verknüpft.

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;  
    }  
}

Andere Tipps

Es gibt einen Umfang Fehler posicao in dem Aufruf von System.arraycopy verwenden. Deklarieren diese Variablen am Anfang der mesclar Methode (anstatt innerhalb der for-Schleife an der Unterseite) erhalten, es zu kompilieren, aber das bedeutet nicht unbedingt die gute Logik. die verschachtelt Auch, wenn Anweisungen innerhalb der for-Schleife nicht für die Zuordnung wie die verwendet werden können. Verschachtelte ternäre Operatoren würde den Trick tun, aber viel Glück mit jemand anders es verstehen. Stattdessen sollte die Zuordnung zu vetor[inicio + posicao] in jedem wenn Block dupliziert werden.

Sie haben, dass innerhalb einer Klassendefinition wickeln und rufen Sie es in einem Hauptverfahren. Dann wird es sowohl kompilieren und ausführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top