Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Brauch mal wieder Hilfe - QuickSort problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.10.2008, 19:42 Uhr
~timstre
Gast


Hallo, ich hab mal wieder ein Anfängerproblem.. Ich soll für Algorithmen in nem Programm den quicksort algorithmus implementieren...


Code:
void quicksort1(vector<int>& intvector,int links, int rechts){
    cout<<"XXX";
    int t = rechts;
    rechts--;

    while (links <= rechts){
        while (intvector[links] < intvector[t])
            links++;
        while (intvector[rechts] > intvector[t])
            rechts--;
        swap(intvector[links], intvector[rechts]);
    }
    swap(intvector[t] , intvector[rechts]);

    quicksort1(intvector,links,rechts-1);
    quicksort1(intvector,rechts+1,t);
}
void quicksort(vector<int>& intvector){
    cout<<"XXX";
    quicksort1(intvector, 0, intvector.size()-1);
}
int main()
{
    vector<int> i1(12);                                        


    srand(time(NULL));                            
    for(int i = 0; i < i1.size(); i++){            
        i1[i]=rand() % 100;                
    }

    for(int i = 0; i < i1.size(); i++)        
        cout << i1[i] <<" ";            
    cout << endl;
    cout<<"XXX";
    quicksort(i1);                

    for(int i = 0; i < i1.size(); i++)            
        cout << i1[i] <<" ";            
    
    cout << endl << endl;

    
    return 0;
}



Das ganze gibt bei mir nur den unsortierten Vector aus... kein XXX (Testausgabe) oder sonstwas.... hoffe ihr könnt mir helfen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.10.2008, 20:49 Uhr
0xdeadbeef
Gott
(Operator)


Und bleibt in einer Endlosschleife stecken, richtig? Das liegt daran, dass du keine Rekursionsabbruchsbedingung in der quicksort1-Funktion hast. Was die Testausgaben angeht, die werden wohl einfach nur nie geflusht. Versuch's mal mit

C++:
cout << "XXX" << flush;


...oder benutz gleich nen Debugger.

Nachtrag: Ansonsten sieht mir das nach nem ISO-C++-Problem aus, also schieb ich's mal ins entsprechende Forum.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 22.10.2008 um 20:51 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2008, 21:19 Uhr
~timstre
Gast


ja sorry, hab schon gemerkt dass da noch schwerwiegende fehler im algorithmus überhaupt sind... also vergesst das erstmal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.10.2008, 22:14 Uhr
zac



Hm... Quicksort brauchst du doch so oder so nicht selbst zu schreiben... nicht für Vektoren zumindest... wozu gibts die STL?
Die benutzt mittlerweile wahrscheinlich sogar de.wikipedia.org/wiki/Introsort ... also eine Form von Quicksort die unter gewissen Umständen einen für diese Situationen angemesseneren Algorithmus benutzt... oder ist das sowas wie ne Hausaufgabe?
Ansonsten sollte sort(intvector.begin(),intvector.end()) eigentlich die Arbeit leisten...

Ah... hab den ersten Satz überlesen^^ sorry^^
--
mov eax,0f9h
push 2
push 2
mov edx,esp
int 2eh

Dieser Post wurde am 22.10.2008 um 22:17 Uhr von zac editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: