Quicksort



  • Liebe Leute!
    meine frage wäre zu diesem quicksortalgorithmus!

    hab werte in einer hashingtabelle gespeichert bzw eingefügt und will jz diese tabelle sortieren via quicksort.

    es funktioniert nur nicht so wie ich gerne hätte!

    meine frage: ich glaube mein fehler liegt darin das ich ein neues array erzeuge mit den werten der alten tabelle, da ich ja wirklich nur eine tabelle haben will wo was drinnen ist, weil eine leere stelle kann ich ja nicht sortieren!

    habt ihr vlt ein paar lösungsvorschläge um diesen algorithmus zum laufen zu bringen!

    wäre echts ehr dankbar! 🙂

    lg

    void sort (const E e[],size_t left, size_t right){
    
        size_t l=left;
        size_t r=right;
    
         E* quickvalues = new E[nmax];
    
          for(size_t i=1;i<nmax;i++)
    
                     if(values[i] == filled)
    
                     quickvalues[i] = values[i];
    
          size_t t;
          size_t pivot = quickvalues[(l + r) / 2];
    
          while (l<= r) {
    
                while (quickvalues[l] < pivot)
    
                      l++;
    
                while (quickvalues[r] > pivot)
    
                      r--;
    
                if (l <= r) {
    
                      t = quickvalues[l];
    
                      quickvalues[l] = quickvalues[r];
    
                      quickvalues[r] = t;
    
                      l++;
    
                      r--;
    
                }
    
          };
    
          if (left < r)
    
                sort(quickvalues, left, r);
    
          if (l < right)
    
                sort(quickvalues, l, right);
    
    }
    


  • Warum willst du mit rohen Arrays arbeiten?
    nimm std::vector dann must du nicht mit new arbeiten.

    Aber zu deinem code: wo hast du nmax definiert?
    Du übergibst der Funktion ein Array const E e[] und verwendest es nicht? 😕



  • Happenpappel schrieb:

    Warum willst du mit rohen Arrays arbeiten?
    nimm std::vector dann must du nicht mit new arbeiten.

    Aber zu deinem code: wo hast du nmax definiert?
    Du übergibst der Funktion ein Array const E e[] und verwendest es nicht? 😕

    ok, kenn das std::vector nicht. muss mir das anschauen wie das funktioniert.

    nmax hab ich in meiner class double hashing definiert

    class DoubleHashing : public Container<E> {
    
     size_t n;
     size_t nmax;
     size_t pos;
    
     E* values;
     Status* status;
    


  • pepschi schrieb:

    ok, kenn das std::vector nicht. muss mir das anschauen wie das funktioniert.

    Ja, dringend! Die Standardbibliothek gehört zum A und O.

    Davon abgesehen wäre es gut, wenn du dir die mit wichtig gekennzeichneten Threads durchliest. Spart uns eine Menge klärender Fragen und dir eine Menge nachgeschobener Infos (wie die zum nmax).


Anmelden zum Antworten