bubble sort



  • wo liegt das Problem bei diesem Bubble Sort er Sortiert nur Teils Teils.
    Wie kann ich das Problem beheben?
    Hab den durchblick mal wieder überhaupt nicht.

    int j = 0;
    int i = 0;
    int result = 0;
    Tlaufer temp;
    
      for(j = 0; j < (ANZTEILNEHMER-1); j++)
      {
        for(i = (ANZTEILNEHMER-1); i > j; i--)
        {
    
            result = strcmp(lauferfeld[j].name, lauferfeld[i].name);
    
                if(result > 0)
                {
                    temp = lauferfeld[i];
                    lauferfeld[i] = lauferfeld[i-1];
                    lauferfeld[i-1] = temp;
                }
        }
    }
    


  • Die hier dürfte funktionieren: Habe eine von mir mal umgebaut auf deinen Fall.

    int i = 0, j;
        Tlaufer temp;
        for(; i < ANZTEILNEHMER - 1; ++i) {
            for(j = ANZTEILNEHMER - 1; j > i; --j) {
                if(strcmp(lauferfeld[j].name, lauferfeld[i].name) > 0) {
                    swapTmp = lauferfeld[j - 1];
                    lauferfeld[j - 1] = lauferfeld[j];
                    lauferfeld[j] = swapTmp;
                }
            }
        }
    

    MfG,

    MaSTaH

    [ Dieser Beitrag wurde am 26.06.2003 um 10:56 Uhr von MaSTaH editiert. ]



  • Danke für deinen Input. Ich habs nun so gelösst

    for(i = 0; i < ANZTEILNEHMER ; i++) 
        {
            for(j = i+1; j < ANZTEILNEHMER; j++) //+1 wegen Selbstvergleich
            {
                if(strcmp(lauferfeld[j].name, lauferfeld[i].name) < 0) 
                {
                    temp = lauferfeld[i];
                    lauferfeld[i] = lauferfeld[j];
                    lauferfeld[j] = temp;
                }
            }
        }
    

Anmelden zum Antworten