tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
1009
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Orb Orb ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Ort
    Göttingen
    Beiträge
    27
    Ich bing erade dabei einen Mergesort zu programmieren:

    jetzt hab ich das problem das er nicht bis zum ende sortiert: sprich er fängt zwar an die einzelnen Arrayelemente zu vertauschen stoppt aber bevor er fertig ist

    Ich vermute das etwas mit den Schleifen im Unteren Teil nciht stimmt. =/


    public void sortieren( Sortable[] in_xArray )
    {
    setVergleiche(0);

    m_xSorter = in_xArray.clone();

    arrayTeilen( 0, in_xArray.length-1 );
    }

    private void arrayTeilen( int in_iLinks, int in_iRechts )
    {
    if( in_iLinks < in_iRechts )
    {
    int iMitte = (in_iRechts+in_iLinks)/2;
    arrayTeilen( in_iLinks, iMitte );
    arrayTeilen( iMitte+1, in_iRechts );
    tauschenEinfügen( in_iLinks, in_iRechts );
    }
    }



    private void tauschenEinfügen( int in_iLinks, int in_iRechts )
    {
    int iMitte = (in_iLinks + in_iRechts)/2;
    int iLinks = in_iLinks;
    int iLinksEnde = iMitte;
    int iRechtsStart = iMitte + 1;
    int iRechtsEnde = in_iRechts;
    int iLinksHelfer = in_iLinks;

    Sortable[] xHelfer = m_xSorter.clone();


    while( ( iLinks <= iLinksEnde ) && ( iRechtsStart <= iRechtsEnde ) )
    {
    countVergleiche();
    //Vergleichen der Beiden Hälften, und anschließendes entsprechendes Tauschen
    if( xHelfer[iLinks].compareTo( xHelfer[iRechtsStart] ) <= 0 )
    {
    m_xSorter[iLinks] = xHelfer[iLinksHelfer];
    iLinksHelfer++;
    }
    else
    {
    m_xSorter[ iLinks ] = xHelfer[iRechtsStart];
    iRechtsStart++;
    }
    iLinks++;
    }

    //Anfügen des Rests aus der linken Hälfte
    while( iLinksHelfer <= iLinksEnde )
    {
    m_xSorter[iLinks] = xHelfer[ iLinksHelfer ];
    iLinks++;
    iLinksHelfer++;
    }
    //Anfügen des Rests aus der rechten Hälfte
    while( iRechtsStart <= iRechtsEnde )
    {
    m_xSorter[iLinks] = xHelfer[ iRechtsStart ];
    iLinks++;
    iRechtsStart++;
    }

    m_Sortiert = m_xSorter;
    }
    Geändert von Orb (16.11.10 um 11:01 Uhr)
     

  2. #2
    Orb Orb ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Ort
    Göttingen
    Beiträge
    27
    ich hab den Teil komplett neu geschrieben mit einer for-Schleife und ein paar verschachtelten if/else Blöcke... is wesentlich übersichtlicher und entsprechend besser zu debuggen
     
    Auch aus Steinen, die einem in den Weg gelegt werden, kann man Schönes bauen.

    Goethe

Ähnliche Themen

  1. QuickSort sortiert nicht richtig
    Von manerr im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 6
    Letzter Beitrag: 02.11.08, 18:15
  2. [MySQL] ORDER BY sortiert nicht richtig
    Von Vronni im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 04.12.06, 19:00
  3. Abfrage sortiert falsch ( bzw gar nicht)
    Von Katzehuhn im Forum Relationale Datenbanksysteme
    Antworten: 8
    Letzter Beitrag: 11.12.05, 13:57
  4. ID wird nicht richtig sortiert
    Von phico im Forum PHP
    Antworten: 10
    Letzter Beitrag: 09.07.05, 16:19
  5. Es wird Nicht Richtig Sortiert!
    Von my-azur im Forum PHP
    Antworten: 6
    Letzter Beitrag: 01.06.05, 22:30

Stichworte