AuD Übung 10 (Stefan Bosse) [31.1.2025] |
Punkte: | Total | /2 | 1. | /2 | 2. | /2 |
Abgabe: 7.2.2025
Es dürfen keine Standard Java Packages verwendet werden mit Ausnahme von System und String.
Der Java Code wird separat als klassisches natives Java Projekt abgegeben. Die wesentlichen Teile sollen aber zum Zwecke der Dokumentation hier in den Code Snippets eingetragen werden (unabhängig ob sie damit ausführbar sind oder nicht).
In dieser Übung sollen verschiedene Sortieralgortihmen implementiert und getestet werden.
Die Daten sollen in dieser Übung in Arrays gespcihert und randomisiert erzeugt werden (im Bereich 1-1000).
x=Array(N)
for(i=0;i<N;i++) x[i]=randint(1,1000)
In Java könnte z.B. folgende Anwieungssequenz verwendet werden:
Random random = new Random();
int[] x = new int[N];
for(int i=0;i<N;i++) x[i]=random.nextInt(1000);
function insertionSort(array) {
for (i = 1; i < length(array); i++) {
j = i;
m = array[i]; m = array[i].key;
// für alle Elemente links vom Marker-Feld
while (j > 0 && array[j − 1] > m) { .. array[j-i].key...
// verschiebe alle größeren Elemente nach hinten
array[j] = array[j − 1];
j−− ;
}
// setze m auf das freie Feld
array[j] = m;
}
}
function BubbleSort (array)
// Eingabe: zu sortierende Folge F der Länge n
do {
swaps=0
for (i=0;i<n;i++) {
if (array[i]> array[i + 1]) {
swap(array,i,i+1)
swaps++
}
}
} while (swaps==0)
}
function swap (array,idx1,idx2) {
t=array[idx1]
array[idx1]=array[idx2]
array[idx2]=t
}
function maxIndex(array,idx) {
maxi=idx
maxv=array[idx]
for (var i=0;i<idx;i++) {
if (array[i]>maxv) {
maxi=i
maxv=array[i]
}
}
return maxi
}
function selectionSort(array) {
p=length(array)-1
while(p) {
g = maxIndex(array,p)
swap (array,p,g)
p--
}
}
Aufgabe. Implementiere die Klasse Sort. Die Sortierung soll aufsteigend und absteigend möglich sein (dir=+1,-1). Die Sortierfunktionen solle alle ihre Schleifendurchläufe zählen (auch in Hilfsfunktionen) und des Gesamtwert zurückgeben.
Die Sortierungklasse mit allen Drum und DranVEJB
Aufgabe. Teste mit 10 randomisierten Datensätzen alle drei Algorithmen. Notiere die Ergebnisse: 1. Die Anzahl der Schleifendurchläufe, 2: Die Laufzeit. Was ist zu beobachten?
Die Testklasse mit randomisierter Erzeugung der Daten und der Zeitmessung. N ist mit 10 und 1000 zu ersetzen. Bei N=10 sollen die Eingabedaten und die Ausgabedaten angezeigt werden (zur Kontrolle). Wähle N größer wenn die mittlere Laufzeit kleiner als 10 ms ist.VEJB