Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Quicksort hilfe

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
12.06.2006, 16:26 Uhr
~RedDragon
Gast


Guten Tag,
ich möchte mir gerne ein eigenes Quicksort Programm schreiben, allerdigns will das noch nicht so recht funktionieren, ich zeigs euch mal^^

C++:
#include<iostream>
using namespace std;

void main()
{
int sort[]={7,1,3,6,2,5,8,4}, links=sort[0],rechts=sort[7];
int vergleichselement=sort[4];

do
{
  while(sort[links]<vergleichselement)
   links=links+1;
  while(sort[rechts]>vergleichselement)
   rechts=rechts-1;
  if(links<=rechts)
   {
    int tausch=sort[links];
    sort[links]=sort[rechts];
    sort[rechts]=tausch;
    links=links+1;
    rechts=rechts-1;
   }
}while(rechts<links);

for(int i=0;i<10;i++)cout<<sort[i]<<", ";
cin.get();

}


So das ist das Programm mal so weit das die Zahlen die höher als das Vergleichselement sind rechst stehen und die, die kleiner sind links stehen, aber irgendwie verfängt sich das ganze in einer Endlosschleife
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.06.2006, 16:31 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


links wird immer größer und rechts wird immer kleiner und die schleife läuft solange wie rechts kleiner als links ist


Dieser Post wurde am 12.06.2006 um 16:31 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.06.2006, 16:34 Uhr
~RedDragon
Gast


Hi, also wenn ich oben das

C++:
int sort[]={7,1,3,6,2,5,8,4}, links=sort[0],rechts=sort[7];


in

C++:
int sort[]={7,1,3,6,2,5,8,4}, links=0,rechts=7;


umändere dann sortiert er die zahlen 7,1,3,6,2,5,8,4 auf 2,1,3,6,7,5,8,4
d.h das die Zahlen die höher als das Vergleichselement sind rechst stehen und die, die kleiner sind links stehen, aber wie bekomme ich es jetzt hin das ich die beiden seiten auch noch sortiere?? Steh gerade irgendwie auf dem Schlauch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.06.2006, 16:53 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Das liegt daran das du den Algorithmus entweder nicht verstanden oder einfach nur falsch implementiert hast.
Am besten schaust du dir mal das Thema Rekursion an denn dei brauchst du dabei bzw. ist es damit am einfachsten. Denn du musst das was du da oben gemacht hast für jede Seite wieder machen.

PS: Ansonsten gibts auf der Seite von virtual ne sehr schöne Erklärung sammt Beispiel dazu:
www.hipphampel.de/index.php?item=cpp/sorting/quicksort

Dieser Post wurde am 12.06.2006 um 16:54 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.06.2006, 17:17 Uhr
~RedDragon
Gast


Hi, ja rekursion ist das sich die funktion selber aufruft ... hab da aber irgendwie was falsch gemacht, kann sich das mal bitte einer anschaun?

C++:
#include<iostream>
using namespace std;

void quicksort(int anfang=0,ende=7)
{
int sort[]={2,1,3,6,5,7,8,4}, links=z,rechts=z1;
int vergleichselement=4;
for(int i=0;i<8;i++)cout<<sort[i]<<", ";
cout<<endl;
do
{
  while(sort[links]<sort[vergleichselement])
   links=links+1;
  while(sort[rechts]>sort[vergleichselement])
   rechts=rechts-1;
  if(links<=rechts)
   {
    int tausch=sort[links];
    sort[links]=sort[rechts];
    sort[rechts]=tausch;
    links=links+1;
    rechts=rechts-1;
   }
}while(rechts<links);

if(0<rechts)
   quicksort(anfang,rechts)
if(links<7)
   quicksort(links,ende)

for(int i=0;i<8;i++)cout<<sort[i]<<", ";
cin.get();
}


komm irgendwie nicht drauf
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.06.2006, 19:14 Uhr
~RedDragon
Gast


Es kommt immer die meldung Größe von 'quicksort' unbekannt oder null, kann damit abe rnichts anfangen :-/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.06.2006, 19:27 Uhr
xXx
Devil


Was soll das denn sein?


C++:
void quicksort(int anfang= 0, ende = 7)


C++:
void quicksort(int anfang= 0, int ende = 7)


Aja... google mal danach Wirst dann sowas wie das hier finden oder sowas!

Dieser Post wurde am 12.06.2006 um 19:30 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.06.2006, 19:45 Uhr
~RedDragon
Gast


Ok danke jetzt geht das wenigstens... mehr oder weniger jetzt sortier er wieder nicht ahhhh
hat wer ein quicksort programm das so ähnlich aufgebaut ist??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.06.2006, 19:56 Uhr
xXx
Devil


Guck mal... hab doch hinter "das" und "sowas" nen Link mit jeweils nen Quicksort sample hinterlegt
 
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: