- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 11

Thema: Quicksort Abbruchbedingung ?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Ich habe mein Problem gefunden. Habe es selbst verursacht weil ich komplett mit unsigned Werten U16 gearbeitet habe.
    Das geht hier schief. Ich muss Signed bzw. "int" benutzen. hab ich in Pascal ja auch getan.
    Der Wert "right" landete bei -1 (also 65535) und dann ging natürlich die Abfrage falsch.
    oder ich schreibe hinter der left++ Zeile, im unterem Abschnitt if (right) right--; dann geht es auch mit unsigned Werten.
    Hier noch mal die korrigierte Version:

    Code:
    U16 ar[5] = {5,4,3,2,1};
    
    void QSort(U16 lo, U16 hi)
    { U16 left,right,mid,tmp;
      left  = lo; 
      right = hi;
      mid   = ar[(lo+hi)/2];
      do 
      {    
         while (ar[left]  < mid) left++; 
         while (ar[right] > mid) right--;
         if (left <= right)
         {
           tmp       = ar[left];
           ar[left]  = ar[right];
           ar[right] = tmp;
           left++; 
           if (right) right--;
         }
      } while (left <= right);
      if (right > lo) QSort(lo,   right);
      if (left  < hi) QSort(left, hi);
    }
    
    
    int main(void)
    { 
      QSort(0,sizeof(ar) / sizeof(ar[0]) -1);
    }
    Ich glaub jetzt hab ich alle Probleme gelöst, wird ja auch Zeit fürs Wochenende.
    Siro
    Geändert von Siro (29.04.2011 um 15:12 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests