<< Sortieralgorithmus SelectionSort >> HILFE!!!



  • Hallo Leute,
    ich versuche verzweifelt einen Sortieralogrithmus zu schreiben nach dem SelectionSort Prinzip. Ich komme aber nicht weiter weil, er will irgendwie nicht so wie ich will! 😃
    Ich weiß nicht ob irgendjemand durch meinen Code durchblickt aber vielleicht , wenn ihr Langeweile habt könnt ihr mir ja helfen!

    /* Selection Sort Sortieralgrotihmus */
    #include<stdio.h>
    
    int minpos(char A[8],int u)
    {
    	int min,temp;
    	min=A[0];             //A[8]={6,3,8,1,4,9,7,2}
    
    		for (int i=u; i<7; i++)
    	  {
    		if (A[i] > A[i+1])
    			{
    				temp=A[i+1];
    					if (temp <= min) min=temp;
    			}
    
    		if (A[i] < A[i+1])
    			{
    				temp=A[i];
    				  if (temp <= min) min=temp;
    			 }
    		 }
    		 return min;
    };
    
    void change(int &x, int &y)
    {
    	int u;
    		u=x; x=y; y=u;
     };
    
    void main()
    {  char min;
    	char A[8]={6,3,8,1,4,9,7,2};
    
    	for (int i=0; i<7; i++)
    		{
    			min=minpos(A,i);
    			if (A[i] > min) change(A[i],A[min]);
    
    		}
    	 printf("%d %d %d %d %d %d %d %d ",A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7]);
     }
    

    Danke im Vorraus!

    Gruß Murphy



  • Ich weiss zwar nicht was die Funktion minpos tuen soll, aber so, wie du sie geschrieben hast, duerfte sie den Wert des kleinsten Elementes und nicht,
    wie der Name es vermuten laesst, die Position der kleinsten Elements zurueckgeben.

    Damit greifts du mit A[min] in change(A[i],A[min]) auf irgenteine wilde Stelle im Speicher zu, nur nicht auf die, die Du haben willst.

    P.S.: Das Problem ist uebrigens eine gute Uebung zur Benutzung eines Debuggers.



  • jaaaa, verdammt! du hast recht!
    ich will mir ja die position zurück geben lassen nicht den wert!
    jetzt weiß ich auch warum das nicht geht ! geil!

    Danke!!!

    Gruß Murphy


Anmelden zum Antworten