2d array

Ich hätte da eine Idee und zwar prüfst du mit deinem Code ja nur in einer Richtung (Horizontalen), aber um es auf ein zwei dimensionales Array anzuwenden, müsstest du auch in der Vertikalen prüfen. Die Priorität liegt allerdings auch bei der Vertikalen, denn wenn beide Bedingungen für größer oder kleiner gegeben sind, soll nur der in der Vertikalen getauscht werden.
Bei Gelegenheit werde ich dies auch mal selber testen, habe nur momentan keine Zeit.

Gruß Mickeyman
 
ja... super...

werde mal gucken ob das geht.. aber wenn du zeit findest könntest dich ja auch mal probieren.. wäre nett...
 
So habe mal einen einfachen algorithmus dafür entworfen, hoffe du kannst es nachvollziehen ;-) In Sachen Performance gibt es sicherlich bessere zumal die guten Algorythmen für eindimensionale Arrays gibt welche man ja aus mehrdimensionalen ableiten kann usw.

C++:
# include <iostream.h>
# include <time.h>
# include <stdlib.h>


int main()
{
	int Matrix[10][10];
	int i,j,k,l,row,col,min,temp,h1,h2;



	cout << "Geben Sie die Spalten ein: " ;
	cin >> col;
	cout << "Geben Sie die Zeilen ein: " ;
	cin >> row;


//zufallsgenerator

    srand(time (0));
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			Matrix[i][j] = rand() % 100;
		}
	}

// Algorithmus
  for (i = 0; i < row; i++)
  {
    for (j = 0; j < col; j++)
    {
      min = Matrix[i][j];           // kleinstes Element auf Anfang setzen
      for (k = i; k < row; k++)     // finde das kleinste Element in 2dim Array
      {
        for (l = (k == i) ? j+1 : 0; l < col; l++)
        {
          if (Matrix[k][l] < min)
          {
            min = Matrix[k][l];     // kleinsten Wert sichern
            h1 = k; h2 = l;         // Index sichern
          }
        }
      }
      temp = Matrix[i][j];   // Anfangswert mit kleinstem Wert tauschen
      Matrix[i][j] = min;
      Matrix[h1][h2] = temp;
    }
  }

// Ausgabe
    for (i = 0; i < row; i++)
    {
        for(j = 0; j < col; j++)
        {
            cout<< "  "<< Matrix[i][j];
        }
        cout<<endl;
    }
}

Eine definierte Matrix mit 10 * 10 Einträgen festzulegen und dann den Nutzer zu fragen wie groß die Matrix sein soll ist auch leicht unlogisch ^^ aber gut..
Das schwierigste war hier Zeile 38 diese Zuweisung für "l" ist eine verkürzte if Anweisung, l ist gleich j+1 wenn i ==k ist ansonsten 0 das muss so sein damit nicht schon sortierte Elemente als Minimalterm erkannt werden.

mfg
 
Zuletzt bearbeitet:
ja super...

wahnsinn.. besten dank... damit war mir sehr geholen...

werde das gleich mal alles ausprobieren... wenn ich noch fragen habe melde ich mich nochmal.. ansonsten... gute arbeit geleistet =)

top forum...
 
Zurück