Algorithmus - Wie geht diese Aufgabe?

T

Tiger61

Aufgabe 1

Eine Zahlenfolge lässt sich mit einem einfachen Algorithmus, im Folgenden EasySort genannt, aufsteigend sortieren. EasySort vertauscht zunächst die erste Zahl der Folge mit der kleinsten Zahl der Folge. Danach vertauscht der Algorithmus die zweite Zahl mit der zweitkleinsten Zahl, die dritte Zahl mit der drittkleinsten Zahl, usw., bis er die letzte Zahl erreicht.
a) Stellen Sie EasySort in Pseudocode dar. 1 Punkt
b) Beweisen Sie, dass EasySort korrekt ist. 2 Punkte


c) Analysieren Sie die Laufzeit von EasySort. 1 Punkt
d) Welchen Sortieralgorithmus wurden Sie vorziehen, InsertionSort oder EasySort?
Begründen Sie Ihre Antwort. 1 Punkte)
Implementieren Sie EasySort in Java. Legen Sie dafür eine Klasse EasySort mit einer Methode public static void easySort(int[] A) und einer Methode public static void main(String[] args)an.
Die Methode easySort soll von der Methode main aus aufgerufen werden. Dabei soll ihr eine nicht sortierte Zahlenfolge übergeben werden. Das Programm soll die sortierte
Zahlenfolge auf die Standardausgabe ausgeben. 2 Punkte


Wie mache ich das aam besten, muss das bis 15 uhr heute hochgeladen haben

vielen dank für die hilfe im voraus
 
Hallo,

ich weiß nicht so ganz was du hier haben möchtest.
Ich kann dir einfach mal den Algorithmus erklären.

Du hast ein Array mit Zahlen. Du suchst dir die kleinste Zahl in dem Array. Diese Zahl tauschst du dann mit der Zahl die im Array an erster Stelle steht. Das war dann der erste Durchgang. Im zweiten Durchgang ignorierst du die erste Stelle im Array und machst es dann genau so wie im ersten Durchgang.

a) Pseudocode
b) Sollst du zeigen, dass der Algorithmus funktioniert.
c) Ganz grob mal. Ob es schnell oder langsam ist.
d) Selbsterklärend
e) Das ganze programmieren.

Gruß

Sascha
 
ich hab momentan noch keinen Plan von java, hatte erst 4 vorlesungen und muss das ganze allerdings heute bis 15 uhr hochgeladen haben. deshlab suche ich ne lösung für die fragen und den code für den algorithmus
 
Hallo,
mich würd mal Interessieren wann du die Aufgaben bekommen hast, wenn du um 15 Uhr damit fertig sein sollst...

Und was ich mich auch frage ist, erwartest du von uns Lösungen?
1) Peil nicht was ihr unter Pseudocode versteht...
2)
Code:
DG = Durchgang

Zahlenfolge {3, 2 5, 1, 4}
1. DG            {1, 2, 5 ,3, 4}             1 und 3 vertauschen....
2. DG            {1, 2, 5 ,3, 4}             2 bleibt stehen
3. DG            {1, 2, 5 ,3, 4}             5 und 3 vertauschen
....

3) Dürften n-1 Durchgänge sein

So den Rest überlass ich dir.
 
Heute morgen in der vorlesung habe ich die aufgaben bekommen. Ich hab nur noch keinerlei anhung von java bin zwar am lernen aber noch reicht das was ich kann nicht aus für die aufgabe. deswegen suche ich wen der mir bei der aufgabe hilft( wie ich den code schreibe, und was ich auswählen soll ( insertionsort oder easysort und wieso)

danke für die hilfe bisher
 
Du sitzt doch bestimmt nicht alleine in der Vorlesung.
Schnapp dir nen Kommilitone und mach das mit dem. Nicht, dass ich dir hier die Hilfe verweigern möchte, aber das selbst zu erarbeiten ist einfach sinnvoller.

Und da wir InsertionSort nicht kennen (Ich kann mir zwar etwas drunter vorstellen) können wir dir die Frage nicht beantworten.
Und dir jetzt den Algorhytmus einzutippen ist auch nicht in deinem Sinne...
 
was du sagst stimmt schon nur wie ich das bis 15 uhr schaffen soll weis ich nicht, mir wäre mit dem algorithmus schon sehr geholfen, den rest schaff ich denke ich selbst irgendwie.
 
Hallo,

Hier bin grad auf der Arbeit (daher kein eclipse) und hab lang kein Java gemacht.

Hier mal der Algorhytmus (sollte stimmen, bitte schau mal wer anderes drüber :D ) in PHP, aber die Funktionsweise solltest du erkennen.

PHP:
var $zuTauschen;
var $zwischenSpeicher;
var $t; // Muss hier angelegt werden da, wenn man sie in der For-Anweisung erst anlegt, bei verlassen der For-Schleife zerfällt

for($i=0;$i<count($array);$i++){
       $t = $i; // So wird immer das so eben "bearbeitete" Element nicht mehr berücksichtigt
	for($t;$t<count($array);$t++){
		if($zuTauschen>$array[$t]){
			$zuTauschen = $array[$t]; // Sucht unter den noch nicht "bearbeiteten" Elementen das kleinste
		}
	}
	$zwischenSpeicher = $array[$i]; // Kurz zwischenspeichern, sonst wäre sie weg
	$array[$i] = $zuTauschen;
	$array[$t] = $zwischenSpeicher; // Da wir $t ganz oben angelegt haben, existiert diese noch
}

Hoffe das Hilft.
 
Zuletzt bearbeitet:
Danke ich denke das mir das etwas weiterhilft. vielen dank nochmals für die schnelle Hilfe
 
Zurück