Skip to content
Snippets Groups Projects
Commit 443ee4ed authored by Schaller's avatar Schaller
Browse files

Dateien für Sortieralgorithmen hinzugefügt

parent 4791aba5
No related branches found
No related tags found
No related merge requests found
package Analyse;
/**
* Beschreiben Sie hier die Klasse Uhr.
*
* @author Dirk Zechnall
* @version 11.05.2011
*/
public class Uhr
{
private long startzeit;
private long endzeit;
private boolean laeuft;
/**
* Konstruktor fr Objekte der Klasse Uhr
*/
public Uhr()
{
startzeit = 0;
endzeit = 0;
laeuft = false;
}
public void start()
{
if (!laeuft) startzeit = System.currentTimeMillis();
laeuft = true;
}
public void stop()
{
if (laeuft) endzeit = System.currentTimeMillis();
laeuft = false;
}
public long getDauer()
{
if (laeuft) return System.currentTimeMillis()-startzeit;
else return endzeit-startzeit;
}
public String toString()
{
String s="";
if (startzeit != 0){
s += "Startzeit = "+startzeit+"\n";
if (laeuft) s += "Die Uhr luft noch!";
else {
s += "Endzeit = "+endzeit+"\n";
s += "Dauer = "+getDauer();
}
}
return s;
}
public void ausgabe()
{
System.out.println(toString());
}
}
\ No newline at end of file
...@@ -2,7 +2,7 @@ package Grundlage; ...@@ -2,7 +2,7 @@ package Grundlage;
/** /**
* @author Dirk Zechnall * @author Dirk Zechnall
* @version 11.05.2023 * @version 11.05.2011
*/ */
public class Feld { public class Feld {
/** /**
...@@ -13,7 +13,7 @@ public class Feld { ...@@ -13,7 +13,7 @@ public class Feld {
private int vergleiche; private int vergleiche;
/** /**
* Konstruktoren - Startzust�nde von Objekten der Klasse Feld * Konstruktoren - Startzustnde von Objekten der Klasse Feld
*/ */
public Feld() public Feld()
{ {
...@@ -42,85 +42,73 @@ public class Feld { ...@@ -42,85 +42,73 @@ public class Feld {
} }
public void resetZaehlung() { public void resetZaehlung() {
/*# vertauschungen = 0;
* Setze die Z�hlung der Vertauschungen und Vergleiche wieder auf 0 zur�ck vergleiche = 0;
* Noch mehr Infos
*/
} }
public void feldfuellenZufaellig(int anzahl, int maximum){ public void feldfuellenZufaellig(int anzahl, int maximum){
if (anzahl < 0) anzahl = Integer.MAX_VALUE; if (anzahl < 0) anzahl = Integer.MAX_VALUE;
if (maximum < 0) maximum = Integer.MAX_VALUE; if (maximum < 0) maximum = Integer.MAX_VALUE;
/*# // Array erzeugen
* Erzeuge f�r das Attribut array ein Double-Array der Gr��e anzahl array = new double[anzahl];
* F�lle es mit Zufallszahlen aus dem maximum 0 bis maximum.
* Du kannst daf�r Math.random() benutzen, das Zufallszahlen zwischen 0 und 1 erzeugt. // Array zufllig fllen
* Setze au�erdem die Z�hlung f�r Vertauschung und Vergleiche wieder zur�ck. for(int i = 0; i < array.length; i++) {
*/ array[i] = Math.random() * maximum;
}
} }
public void feldfuellenaufsteigend(int anzahl){ public void feldfuellenaufsteigend(int anzahl){
/*# // Array erzeugen
* Erzeuge f�r das Attribut array ein Double-Array der Gr��e anzahl array = new double[anzahl];
* F�lle es mit den Zahlen 0 bis anzahl-1.
*/ // Array aufsteigend fllen
for(int i = 0; i < array.length; i++) {
array[i] = i;
}
} }
public void feldfuellenabsteigend(int anzahl){ public void feldfuellenabsteigend(int anzahl){
/*# // Array erzeugen
* Erzeuge f�r das Attribut array ein Double-Array der Gr��e anzahl array = new double[anzahl];
* F�lle es mit den Zahlen anzahl-1 bis 0.
*/ // Array absteigend fllen
for(int i = 0; i < array.length; i++) {
array[i] = array.length-1 - i;
}
} }
/*# Hilfsmethoden fuer das Sortieren*/ /*# Hilfsmethoden fuer das Sortieren*/
public double getWert(int index) { public double getWert(int index) {
/*# return array[index];
* Gib den Wert des Element mit dem gesuchten Index zur�ck.
*/
return 0.0;
} }
public void setWert(int index, double wert) { public void setWert(int index, double wert) {
/*# array[index] = wert;
* Setze den Wert des Element mit dem gebenen Index auf Wert.
* Gib es diesen index nicht, soll nichts passieren.
*/
} }
public void tauscheInhalteAnPos(int index1, int index2){ public void tauscheInhalteAnPos(int index1, int index2){
/*# double tmp = array[index1];
* Vertausche die Elemente an den Position index1 und index2 mit array[index1] = array[index2];
* Dreieckstausch. Erh�he das Attribut vertauschungen. array[index2] = tmp;
*/ vertauschungen++;
} }
public boolean istInhaltKleiner(int index1, int index2) { public boolean istInhaltKleiner(int index1, int index2) {
/*# vergleiche++;
* Gib zur�ck, ob das Element an der Position index1 kleiner als das an der Position index2 ist. return array[index1]<array[index2];
* Erh�he das Attribut vergleiche.
*/
return false;
} }
public boolean istInhaltGroesser(int index1, int index2) { public boolean istInhaltGroesser(int index1, int index2) {
/*# vergleiche++;
* Gib zur�ck, ob das Element an der Position index1 gr��er als das an der Position index2 ist. return array[index1]>array[index2];
* Erh�he das Attribut vergleiche.
*/
return false;
} }
public boolean istInhaltGleich(int index1, int index2) { public boolean istInhaltGleich(int index1, int index2) {
/*# vergleiche++;
* Gib zur�ck, ob das Element an der Position index1 gleich dem an der Position index2 ist. return array[index1]==array[index2];
* Erh�he das Attribut vergleiche.
*/
return false;
} }
/*# Methode fuer die Konsolenausgabe */ /*# Methode fuer die Konsolenausgabe */
...@@ -139,4 +127,4 @@ public class Feld { ...@@ -139,4 +127,4 @@ public class Feld {
} }
} }
\ No newline at end of file
...@@ -3,7 +3,7 @@ dependency1.from=FeldTest ...@@ -3,7 +3,7 @@ dependency1.from=FeldTest
dependency1.to=Feld dependency1.to=Feld
dependency1.type=UsesDependency dependency1.type=UsesDependency
objectbench.height=93 objectbench.height=93
objectbench.width=451 objectbench.width=760
package.divider.horizontal=0.599476439790576 package.divider.horizontal=0.599476439790576
package.divider.vertical=0.8 package.divider.vertical=0.8
package.editor.height=393 package.editor.height=393
......
package Sortieralgorithmen;
/**
* @author Dirk Zechnall
* @version 11.05.2011
*/
import Grundlage.*;
import Analyse.*;
public class SelectionSort extends SortingAlgorithm
{
/**
* Im Konstruktor werden mit der Anzahl der Elemente die Groesse des
* Feldes festgelegt.
* @param int anzahlElemente: Die Anzahl der zu sortierenden Zahlen
*/
public SelectionSort()
{
super();
name = "SelectSort";
}
/**
* Methoden - Fähigkeiten von Objekten der Klasse Feld
*/
public void sort(){
start();
/*#
* Aufgaben:
* 1) Implementiere in der Methode "public void sort()" den SelectionSort-Algorithmus.
* 2) Erzeuge mind. zwei Objekte der Klasse und vergleiche in den Inspect-Fenstern
* die Felder und die Sortierdauer vor und nach dem Sortieren
*/
stop();
}
}
\ No newline at end of file
package Sortieralgorithmen;
import Analyse.*;
import Grundlage.*;
/**
* @author Dirk Zechnall
* @version 11.05.2011
*/
public abstract class SortingAlgorithm
{
protected Uhr stoppUhr;
public Feld reihe;
protected String name;
private boolean konsolenAusgabe;
/**
* Im Konstruktor werden mit der Anzahl der Elemente die Groesse des
* Feldes festgelegt.
* @param int anzahlElemente: Die Anzahl der zu sortierenden Zahlen
*/
public SortingAlgorithm(){
this(100);
}
public SortingAlgorithm(int anzahlElemente)
{
stoppUhr = new Uhr();
neuesFeld(anzahlElemente);
name = "";
}
public void neuesFeld(int anzahlElemente) {
reihe = new Feld(anzahlElemente,anzahlElemente);
if(anzahlElemente<=1000) konsolenAusgabe = true;
else konsolenAusgabe = false;
}
public void setKonsolenausgabe(boolean ausgabe) {
konsolenAusgabe = ausgabe;
}
public void setFeld(Feld f) {
reihe = f;
}
/**
* Methoden - Faehigkeiten von Objekten der Klasse Feld
*/
public abstract void sort();
protected void start(){
if(konsolenAusgabe) {
System.out.println("Das noch unsortierte Feld sieht so aus:");
reihe.feldKonsolenAusgabe();
}
reihe.resetZaehlung();
stoppUhr.start();
}
protected void stop() {
stoppUhr.stop();
if(konsolenAusgabe) {
System.out.println("Das sortierte Feld sieht wie folgt aus:");
reihe.feldKonsolenAusgabe();
}
System.out.println("Die Sortierung von "+reihe.getLaenge()+" Elementen mit "+name+" dauerte "+stoppUhr.getDauer()+" Millisekunden und bentigte "+reihe.getAnzahlVergleiche()+" Vergleiche und "+reihe.getAnzahlVertauschungen()+" Vertauschungen.\n");
}
public long getDauer ()
{
return stoppUhr.getDauer();
}
public int getAnzahlVergleiche()
{
return reihe.getAnzahlVergleiche();
}
public int getAnzahlVertauschungen()
{
return reihe.getAnzahlVertauschungen();
}
public String getName ()
{
return name;
}
}
\ No newline at end of file
#BlueJ package file
objectbench.height=93
objectbench.width=760
package.divider.horizontal=0.599476439790576
package.divider.vertical=0.7975708502024291
package.editor.height=387
package.editor.width=649
package.editor.x=219
package.editor.y=277
package.frame.height=594
package.frame.width=800
package.numDependencies=0
package.numTargets=2
package.showExtends=true
package.showUses=true
readme.height=60
readme.name=@README
readme.width=49
readme.x=10
readme.y=10
target1.height=70
target1.name=SelectionSort
target1.showInterface=false
target1.type=ClassTarget
target1.width=120
target1.x=40
target1.y=220
target2.height=70
target2.name=SortingAlgorithm
target2.showInterface=false
target2.type=AbstractTarget
target2.width=130
target2.x=140
target2.y=110
#BlueJ package file #BlueJ package file
editor.fx.0.height=0 editor.fx.0.height=739
editor.fx.0.width=0 editor.fx.0.width=816
editor.fx.0.x=0 editor.fx.0.x=552
editor.fx.0.y=0 editor.fx.0.y=100
objectbench.height=86 objectbench.height=86
objectbench.width=477 objectbench.width=802
package.divider.horizontal=0.6004962779156328 package.divider.horizontal=0.6004962779156328
package.divider.vertical=0.7928730512249443 package.divider.vertical=0.7928730512249443
package.editor.height=349 package.editor.height=349
...@@ -14,7 +14,7 @@ package.editor.y=196 ...@@ -14,7 +14,7 @@ package.editor.y=196
package.frame.height=549 package.frame.height=549
package.frame.width=842 package.frame.width=842
package.numDependencies=0 package.numDependencies=0
package.numTargets=1 package.numTargets=2
package.showExtends=true package.showExtends=true
package.showUses=true package.showUses=true
project.charset=windows-1252 project.charset=windows-1252
...@@ -29,3 +29,9 @@ target1.type=PackageTarget ...@@ -29,3 +29,9 @@ target1.type=PackageTarget
target1.width=120 target1.width=120
target1.x=80 target1.x=80
target1.y=10 target1.y=10
target2.height=82
target2.name=Sortieralgorithmen
target2.type=PackageTarget
target2.width=120
target2.x=10
target2.y=110
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment