Warum sortiert diese schleife nicht richtig??



  • erst mal guten morgen gg

    for(n=0;n<101;n++)
    {
    	if(ordnung[n]<ordnung[n+1])
    	{
    		u=ordnung[n+1];
    		ordnung[n+1]=ordnung[n];
    		ordnung[n]=u;
    
    		for(i=0;i<100;i++)
    		{
    			cHilf[i]=cText[n+1][i];
    			cText[n+1][i]=cText[n][i];
    			cText[n][i]=cHilf[i];
    		}
    		n=0;
    	}
    }
    

    diese schleife sollte eigentlich ein zweidimensionales array "cText" (zeichen je zeile)ordnen und die dazugehörigen nummern im array "ordnung" gleich mitordnen und zwar nach den zahlen in "ordnung". aber es sortiert(wenn man eine neue höchstzahl unten in der tabelle anhängt[sollte die höchste zahl immer als erstes])die neue zahl immer nur an zweite stelle. erst nach dem zweiten sortiervorgang ist sie dann ganz oben...

    warum?


  • Mod

    Ich verstehe nicht, wie dein Algorithmus überhaupt sortieren soll. Es sieht ein bisschen aus wie ein sehr falsches Bubblesort, aber das ist jetzt nur geraten.

    Veruch mal mit deinem Algorithmus auf einem Blatt Papier die Zahlen 5, 3, 4, 2, 1 zu sortieren. Es wird nicht funktionieren. Du solltest noch einmal über den Algorithmus nachdenken. Falls du nicht nachdenken willst, gibt es auch eine fertige Sortierfunktion in der C Standardbibliothek.

    P.S.: Wieviele Elemente hat dein Array ordnung? Du greift darauf zu, als ob es 102 Elemente hätte, was eine etwas ungewöhnliche Zahl ist. Anfänger wählen erfahrungsgemäß gerne 100 als Arraygröße, was verdächtig nahe dran liegt. Fehler in deinem Programm?

    P.P.S.: In anderen Threads hast du doch schon einige gute Tipps bekommen, wie du dein Programm mittels Structs deutlich vereinfachen könntest. Das würde hier auch sehr helfen, dann entfiele das Gefrickel (welches vermutlich auch falsch ist) mit cHilf und cText.



  • das array ordnung hat eigentlich 101 Plätze...



  • und komischer weiße schaff ich es auch mit den zahlen 53421 sie zu sortieren..


  • Mod

    tuni schrieb:

    und komischer weiße schaff ich es auch mit den zahlen 53421 sie zu sortieren..

    Ah, hatte mich verguckt, du wolltest absteigend sortieren. Dann sortier mal 1,2,4,3,5. Da kommt bei deinem Algorithmus nämlich 2,4,3,5,1 raus.


Anmelden zum Antworten