Angabe

Sortiere ein vorgegebenes Feld (10,6,3,5,1) per SelectionSort in einer Funktion.

Lösung

/* Beispiel: Funktionen, Arrays und Sortieralgorithmen
   Filename: main.cpp
   Author: Lahmer
   Title: SelectionSort
   Description: Ein vorgegebenes Feld wird per SelectionSort (Suche nach Minimum) sortiert
   Last Change:19.01.2018
*/
//Header-Dateien
#include <iostream>
 
//Namensraum
using namespace std;
 
 
//Funktionsdeklaration
void Sortieren(int feld[], int size);	//kein Rückgabewert, Übergabe: Feld, Größe des Feldes
void ausgabe(int feld[], int size);		//kein Rückgabewert, Übergabe: Feld, Größe des Feldes
 
int main(int argc, char** argv) 
{
 
	int feld[5] = {10, 6, 3, 5, 1};
 
	//Funktionsaufruf
	Sortieren(feld, 5);				//Aufruf der Funktion Sortieren
	ausgabe(feld, 5);				//Aufruf der Funktion ausgabe
 
	return 0;
}
 
 
//Funktionsdefinition
void Sortieren(int feld[], int size){
	int position=0, hzahl;		//position=Position des Minimums, hzahl=Hilfszahl für Zahlentausch
	for(int j=0; j<size; j++)      //Gehe von 0 bis 4 durch
	{		
		position=j;	//1. Position des sortierten Teiles des Arrays (1. Durchlauf 0, 2.Durchlauf = 1; 3. Durchlauf =2; ... =4)
		for(int i=j+1; i<size; i++)   //Suche Minimum - beginne immer bei j+1 ; da ein Vergleich von feld[i]<feld[position] keinen Sinn macht, da sie im ersten Schritt auf dieselbe Zahl zeigen
		{	
			if(feld[i]<feld[position])    //Schaue ob Feld[i] kleiner als das aktuelle Minimum ist
			{		
				position=i;				//Wenn ja, speichere die aktuelle Position i in position
			}
		}
		hzahl=feld[j];				//speichere die Zahl an Position j in die Hilfsvariable hzahl
		feld[j] = feld[position];	//speichere das Minimum an der Position position an die Position j
		feld[position] = hzahl;		//speichere hzahl an die Position position
	}
}
 
//Funktionsdefinition
void ausgabe(int feld[], int size)   //Ausgabe des Feldes
{	
 
	for(int i=0; i<size;i++)
	{
		cout << feld[i] << endl;
	}
 
}

Ausgabe

1
3
5
6
10

--------------------------------
Process exited after 0.08686 seconds with return value 0
Drücken Sie eine beliebige Taste . . .