Hallo Leute,
ich bin momentan in der Jahrgangsstufe 11 auf dem Gymnasium und mache nächstes Jahr mein Abitur.
Ich habe Informatik als schriftliches Abiturfach belegt und muss jetzt einen Mergesort schreiben.
Ich habe bereits das komplette Programm geschrieben und in der Schule habe ich mit einem Kollegen zusammen den Insertionsort geschrieben.
Mein Problem ist jetzt, dass ich überhaupt keine Ahnung habe, wo ich anfangen soll.
Wir benutzen BlueJ, um diese Dinge zu programmieren.
Ist jemand so lieb, mir den Insertionsort in einen Mergesort umzuschreiben? Ich weiß nicht, ob man sich hier im Forum so sehr gegenseitig hilft, aber zur Not würde ich auch ein paar Taler springen lassen!
Es ist wirklich total dringend!
Es muss also nur der Teil "insertionsort" umgeschrieben werden (letzter Teil).
Hier der Programmcode:
Danke im voraus!
Mit freundlichen Grüßen,
Limette24.
ich bin momentan in der Jahrgangsstufe 11 auf dem Gymnasium und mache nächstes Jahr mein Abitur.
Ich habe Informatik als schriftliches Abiturfach belegt und muss jetzt einen Mergesort schreiben.
Ich habe bereits das komplette Programm geschrieben und in der Schule habe ich mit einem Kollegen zusammen den Insertionsort geschrieben.
Mein Problem ist jetzt, dass ich überhaupt keine Ahnung habe, wo ich anfangen soll.
Wir benutzen BlueJ, um diese Dinge zu programmieren.
Ist jemand so lieb, mir den Insertionsort in einen Mergesort umzuschreiben? Ich weiß nicht, ob man sich hier im Forum so sehr gegenseitig hilft, aber zur Not würde ich auch ein paar Taler springen lassen!
Es ist wirklich total dringend!
Es muss also nur der Teil "insertionsort" umgeschrieben werden (letzter Teil).
Hier der Programmcode:
Code:
/**
* Die Klasse Vokabeldatenbank wurde automatisch erstellt:
*
* @author
* @version 12.11.2012
*/
import sum.komponenten.*;
import sum.werkzeuge.*;
import sum.ereignis.*;
public class Vokabeldatenbank extends EBAnwendung
{
// Objekte
private Etikett hatEtikettDeutsch;
private Etikett hatEtikettEnglisch;
private Etikett hatEtikettStatus;
private Textfeld hatTextfeldDeutsch;
private Textfeld hatTextfeldEnglisch;
private Knopf hatKnopfEnglischesWortNachschlagen;
private Knopf hatKnopfDeutschesWortNachschlagen;
private Knopf hatKnopfAufnehmen;
private Knopf hatKnopfEntfernen;
private Knopf hatKnopfAnfang;
private Knopf hatKnopfWeiter;
private Knopf hatKnopfEnde;
private Knopf hatKnopfSortieren;
private List hatVokabelliste;
// Attribute
/**
* Konstruktor
*/
public Vokabeldatenbank()
{
//Initialisierung der Oberklasse
super(631, 155);
hatEtikettDeutsch = new Etikett(30, 30, 75, 25, "Deutsch:");
// Ausrichtung
hatEtikettDeutsch.setzeAusrichtung(Ausrichtung.LINKS);
hatEtikettEnglisch = new Etikett(30, 60, 75, 25, "Englisch:");
// Ausrichtung
hatEtikettEnglisch.setzeAusrichtung(Ausrichtung.LINKS);
hatEtikettStatus = new Etikett(30, 90, 200, 25, "");
// Ausrichtung
hatEtikettStatus.setzeAusrichtung(Ausrichtung.LINKS);
hatTextfeldDeutsch = new Textfeld(110, 30, 300, 25, "");
// Ausrichtung
hatTextfeldDeutsch.setzeAusrichtung(Ausrichtung.LINKS);
hatTextfeldEnglisch = new Textfeld(110, 60, 300, 25, "");
// Ausrichtung
hatTextfeldEnglisch.setzeAusrichtung(Ausrichtung.LINKS);
hatKnopfEnglischesWortNachschlagen = new Knopf(420, 30, 200, 25, "Englisches Wort nachschlagen");
hatKnopfEnglischesWortNachschlagen.setzeBearbeiterGeklickt("hatKnopfEnglischesWortNachschlagenGeklickt");
hatKnopfDeutschesWortNachschlagen = new Knopf(420, 60, 200, 25, "Deutsches Wort nachschlagen");
hatKnopfDeutschesWortNachschlagen.setzeBearbeiterGeklickt("hatKnopfDeutschesWortNachschlagenGeklickt");
hatKnopfAufnehmen = new Knopf(200, 90, 100, 25, "Aufnehmen");
hatKnopfAufnehmen.setzeBearbeiterGeklickt("hatKnopfAufnehmenGeklickt");
hatKnopfEntfernen = new Knopf(310, 90, 100, 25, "Entfernen");
hatKnopfEntfernen.setzeBearbeiterGeklickt("hatKnopfEntfernenGeklickt");
hatKnopfAnfang = new Knopf(30, 120, 100, 25, "Anfang");
hatKnopfAnfang.setzeBearbeiterGeklickt("hatKnopfAnfangGeklickt");
hatKnopfWeiter = new Knopf(136, 120, 100, 25, "Weiter");
hatKnopfWeiter.setzeBearbeiterGeklickt("hatKnopfWeiterGeklickt");
hatKnopfEnde = new Knopf(240, 120, 100, 25, "Ende");
hatKnopfEnde.setzeBearbeiterGeklickt("hatKnopfEndeGeklickt");
hatKnopfSortieren = new Knopf(420, 120, 100, 25, "Sortieren");
hatKnopfSortieren.setzeBearbeiterGeklickt("hatKnopfSortierenGeklickt");
hatVokabelliste = new List();
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfEnglischesWortNachschlagen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfEnglischesWortNachschlagenGeklickt()
{
Vokabel lZuPruefendeVokabel;
boolean lGefunden;
lGefunden = false;
this.hatVokabelliste.toFirst();
while (!lGefunden && this.hatVokabelliste.hasAccess())
{
lZuPruefendeVokabel = (Vokabel)this.hatVokabelliste.getObject();
if (lZuPruefendeVokabel.gibDeutschesWort().equalsIgnoreCase(this.hatTextfeldDeutsch.inhaltAlsText()))
{
this.zeigeAktuelleVokabel();
lGefunden = true;
}
this.hatVokabelliste.next();
}
if (!lGefunden)
{
this.hatEtikettStatus.setzeInhalt("Vokabel nicht gefunden.");
}
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfDeutschesWortNachschlagen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfDeutschesWortNachschlagenGeklickt()
{
Vokabel lZuPruefendeVokabel;
boolean lGefunden;
lGefunden = false;
this.hatVokabelliste.toFirst();
while (!lGefunden && this.hatVokabelliste.hasAccess())
{
lZuPruefendeVokabel = (Vokabel)this.hatVokabelliste.getObject();
if (lZuPruefendeVokabel.gibEnglischesWort().equalsIgnoreCase(this.hatTextfeldEnglisch.inhaltAlsText()))
{
this.zeigeAktuelleVokabel();
lGefunden = true;
}
this.hatVokabelliste.next();
}
if (!lGefunden)
{
this.hatEtikettStatus.setzeInhalt("Vokabel nicht gefunden.");
}
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfAufnehmen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfAufnehmenGeklickt()
{
Vokabel lNeueVokabel;
lNeueVokabel = new Vokabel(this.hatTextfeldDeutsch.inhaltAlsText(), this.hatTextfeldEnglisch.inhaltAlsText());
this.hatVokabelliste.append(lNeueVokabel);
this.hatTextfeldDeutsch.setzeInhalt("");
this.hatTextfeldEnglisch.setzeInhalt("");
this.hatEtikettStatus.setzeInhalt("Vokabel " + lNeueVokabel.gibDeutschesWort() + " aufgenommen.");
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfEntfernen fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfEntfernenGeklickt()
{
if (this.hatVokabelliste.hasAccess())
{
this.hatVokabelliste.remove();
}
this.zeigeAktuelleVokabel();
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfAnfang fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfAnfangGeklickt()
{
this.hatVokabelliste.toFirst();
this.zeigeAktuelleVokabel();
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfWeiter fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfWeiterGeklickt()
{
this.hatVokabelliste.next();
this.zeigeAktuelleVokabel();
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfEnde fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfEndeGeklickt()
{
this.hatVokabelliste.toLast();
this.zeigeAktuelleVokabel();
}
/**
* Zeigt die Vokabel in den Textfeldern an, auf die momentan der Listenzeiger gesetzt ist.
*/
public void zeigeAktuelleVokabel()
{
Vokabel lAktuelleVokabel;
if (hatVokabelliste.hasAccess())
{
lAktuelleVokabel = (Vokabel)this.hatVokabelliste.getObject();
this.hatTextfeldDeutsch.setzeInhalt(lAktuelleVokabel.gibDeutschesWort());
this.hatTextfeldEnglisch.setzeInhalt(lAktuelleVokabel.gibEnglischesWort());
}
}
/**
* Vorher: Ereignis GeklicktvonhatKnopfSortieren fand statt.
* Nachher: (schreiben Sie, was in dieser Methode ausgefuehrt wird)
*/
public void hatKnopfSortierenGeklickt()
{
insertionSort();
this.hatVokabelliste.toFirst();
this.zeigeAktuelleVokabel();
}
/**
* Sortiert die Vokabelliste mittels Insertion-Sort.
*/
public void insertionSort()
{
List lNeueVokabelliste;
Vokabel lAktuelleVokabel;
// Neue Vokabelliste für die bereits einsortierten Vokabeln erzeugen
lNeueVokabelliste = new List();
// An den Anfang der Vokabelliste
this.hatVokabelliste.toFirst();
while (!this.hatVokabelliste.isEmpty())
{
// Vorderste Vokabel aus der Vokabelliste nehmen und dort entfernen; Listenzeiger verschiebt sich zum nächsten Objekt
lAktuelleVokabel = (Vokabel)this.hatVokabelliste.getObject();
this.hatVokabelliste.remove();
// An den Anfang der sortierten Vokabelliste springen
lNeueVokabelliste.toFirst();
// Solange weiterspringen, wie die Wörter nicht mehr kürzera als das einzusortiernde Wort sind und wir uns noch in der Liste befinden
while (lNeueVokabelliste.hasAccess() && ((Vokabel)lNeueVokabelliste.getObject()).gibDeutschesWort().length() < lAktuelleVokabel.gibDeutschesWort().length())
{
lNeueVokabelliste.next();
}
// Wenn wir uns noch in der Liste befinden, Vokabel vor aktuelle Position einfügen, sonst an die Liste anhängen
if (lNeueVokabelliste.hasAccess())
{
lNeueVokabelliste.insert(lAktuelleVokabel);
}
else
{
lNeueVokabelliste.append(lAktuelleVokabel);
}
}
this.hatVokabelliste = lNeueVokabelliste;
}
}
Danke im voraus!
Mit freundlichen Grüßen,
Limette24.