Morgen! Ich habe folgende Aufgabenstellung, welche ich bearbeiten soll. Bei mir hakt es eigentlich nur noch beim Einbinden von Selction Sort: Vielleciht kann mir jemand helfen. Danke schonmal.
Aufgabenstellung:
a)Schreiben Sie ein Programm Numbers, in dem n ganzzahlige Zufallszahlen (aus dem Bereich von 5 bis 500) erzeugt und in einem Feld a gespeichert werden. Berechnet und ausgegeben werden sollen die kleinste Zahl und die größte Zahl des Feldes.
Hinweis: Nutzen Sie zum Generieren der Zufallszahlen die Standardfunktion random aus der Klasse Math, mit
int z = (int)(maxrand*Math.random());
werden Zufallszahlen zwischen 0 und maxrand erzeugt (0 <= z < maxrand).
b)Schreiben Sie eine Methode selectionSort(a) zum Sortieren der Elemente des Feldes mit dem Sortierverfahren Selection-Sort. Ermitteln Sie die Anzahl der Vertauschungen und die Anzahl der Vergleiche.
Aufgabenstellung:
a)Schreiben Sie ein Programm Numbers, in dem n ganzzahlige Zufallszahlen (aus dem Bereich von 5 bis 500) erzeugt und in einem Feld a gespeichert werden. Berechnet und ausgegeben werden sollen die kleinste Zahl und die größte Zahl des Feldes.
Hinweis: Nutzen Sie zum Generieren der Zufallszahlen die Standardfunktion random aus der Klasse Math, mit
int z = (int)(maxrand*Math.random());
werden Zufallszahlen zwischen 0 und maxrand erzeugt (0 <= z < maxrand).
b)Schreiben Sie eine Methode selectionSort(a) zum Sortieren der Elemente des Feldes mit dem Sortierverfahren Selection-Sort. Ermitteln Sie die Anzahl der Vertauschungen und die Anzahl der Vergleiche.
Code:
package Übung05;
import algds.*;
public class Numbers {
static int lBound = 5; // linke Grenze
static int rBound = 50; // rechte Grenze
public static void main(String[] args) {
int fSize = 1;
System.out.print("Bitte Feldgröße eingeben: ");
fSize = IOUtils.readInt();
// Feld der Größe fSize erzeugen
int[] a = new int[fSize];
// Feld belegen
init(a);
// Feld ausgeben
print(a);
selectionSort(null);
}
// Feld mit Zufallszahlen füllen, Min & Max ermitteln
public static int[] init(int[] a)
{
int min = 0; int max = 0;
int r = 0;
for (int i = 0; i < a.length; i++)
{
r = (int) (Math.random() * (rBound - lBound) + lBound);
if (r > max) max = r;
if (r <= min) min = r;
a[i] = r;
}
System.out.println("Min = " + min + ", Max = " + max);
return a;
}
// Ausgabe der Feldwerte
public static void print(int[] a)
{
int i = 0;
System.out.print("(");
while (i != a.length)
{
System.out.print(a[i]);
i++;
if (i != a.length) System.out.print(",");
}
System.out.println(")");
}
// vertauscht in einem Array die Einträge mit Index x und y
private static void vertausche(char[] a, int x, int y){
char zwischenspeicher;
zwischenspeicher = a[x];
a[x] = a[y];
a[y] = zwischenspeicher;
}
// sucht die Position des Minimums eines Teilarrays
private static int minimum(char[] a, int anfang, int ende){
int minIdx = anfang;
for (int index=anfang+1; index<=ende; index++){ //durchlaufe das Array
if (a[index] < a[minIdx]){
minIdx = index; //neues Minimum gefunden
}
}
return minIdx;
}
// sortiert ein Array von Zeichen
public static void selectionSort(char[] a){
for (int index=0; index<a.length-1; index++){ //durchlaufe das Array
//suche Minimum des unsortierten rechten Teilarrays
int minIdx = minimum(a, index, a.length-1);
vertausche(a,index,minIdx);
}
}
}