Quicksort programmieren Probleme

Status
Nicht offen für weitere Antworten.
J

Jah

Gast
Hallo,
In unserem Informatikkurs (Klassenstufe 12) hat unser Lehrer heute urplötzlich angekündigt, dass alle, die er im Einser-Bereich (also der Note eins (13-15 Punkte)) sieht, ihm bis nächsten Mittwoch ein Quicksort programm programmieren sollen. Wir dürfen hierzu alle gängien Hilfsmittel nutzen, die zu finden sind.
Nun habe ich basierend auf meinem Bubblesort-Programm damit angefangen und das Programm "kann" nun folgendes:
Es hat so viele Textfelder und Labels wie die Variable max vorgibt und es hat zwei Buttons. Ein Button überträgt die Zahlen der Textfelder auf die Labels - das funktioniert.
Nun komme ich zum zweiten Button und möchte hier natürlich den Sortieralogrithmus einbasteln und das "große Problem" fängt da auch schon an. Wir sollen das mittlere Element (das erste oder letzte zu wählen wurde uns strikt verboten) als Pivotelement nehmen. Aber wie mache ich das?
Ich habe daran gedacht die Variable max einfach durch zwei zu teilen, komme dann aber bei einer ungeraden Zahl an Elementen auf eine Kommazahl (bei 5 Elementen (also max = 5) wäre das ja 5 / 2 = 2,5). Ein Feld mit der Zahl 2,5 gibt es aber natürlich nicht.
Mein erstes Problem bei diesem Programm (weitere werden sicherlich folgen) . . . ich erbitte da eure Hilfe

Vielleicht nochmal zum besseren Verständnis die Aufgaben:
- Programmieren sie ein Quicksortprogramm
- Zunächst sollen fünf Zahlen sortiert werden
- Das Programm ist varibel zu gestalten, sodass ohne große Änderungen auch 10, 20, 100 ... Zahlen sortiert werden können
- Kommentiere sie jede(!) Zeile und bereiten sie sich darauf vor, gezielte Fragen beantworten zu können

So nun stehe ich hier im "Regen" und kriege nicht einmal das Pivot-Element definiert.

Also zurück zu meiner Frage:
Wenn ich die Varible max = 5 gesetzt habe und die fünf (vom Nutzer) eingegebenen Zahlen auf die Labels übertragen habe, wie kann ich dann beim zweiten Button das Pivot-Element definieren?

Wäre über schnelle Hilfe dankbar
 

tfa

Top Contributor
Für int-Werte gilt:

5/2=2

Ganzzahldivision liefert Integer als Ergebnis zurück.
 
J

Jah

Gast
Super . . .vielen Dank. Das z.B. wusste ich bisher nicht :)
Ich werde es dann einfach mal mit max/2 +1 versuchen, da ich damit ja an sich in jede legitime Mitte bestimme . . . bei einer ungerade Zahl müsste es dann die genaue Mitte ergeben und bei geraden Zahlen "eine der beiden "Mitten". Damit bin ich sicherlich ein Stück weiter, aber vielleicht ergeben sich mir noch mehr Fragen -.-
Erstmal jedenfalls vielen dank
 
J

Jah nochmal

Gast
Hm...so richtig weit hat mich meine Idee mit dem max/2+1 nicht gebracht. Das versagt spätestens beim zweiten durchlauf, da ich ja nicht vorher weiß, wo groß die jeweiligen Felder werden.
Ich habe da ein bisschen gegoogelt, aber bisher keine Lösung gefunden, die ich verstehen würde -.-
Mag jetzt vielleicht wirklich doof klingen oder viel verlangt sein, meine Frage, aber wie bestimmt man denn das Pivotelement eines QUicksort-Programms normalerweise . . . in einem fertigen Quelltext sehe ich das irgendwie immer nicht bzw. kann die wichtigen Elemente nicht rauslesen. :oops:

Das zweite Problem, dass sich mir stellt ist, dass ich keine Ahnung habe, wie ich die einzelnen Zahlen mit dem Element vergleiche. Ist ja prima, dass die Zahl im ersten Label z.b. 5 ist und auch angezeigt wird, aber wie kann ich die Zahl aus diesem Label einzeln rausarbeiten . . . das sieht momentan bei mir so aus:

Code:
    public void actionPerformed(ActionEvent e)         
           {                                                   
                  if (e.getSource()==button1)                       
                  {                                            
                  for (int a=0; a<max; a=a+1)                  
                  {                                            
                  s=TF[a].getText();                          
                  a1[a]=Integer.parseInt(s1);                  
                  LA[a].setText(""+a1[a]);                     
                  }                                            
                  }                                            

                  if (e.getSource()==button2)                       
                  {                                           
                  
                  }

Ich habe zwar das ganze Theoriewissen über Quicksort und wir haben endlose Reihen von Hand sortiert, aber mit der Praxis komme ich irgendwie nicht wirklich zurecht

Vielleichten sollten Mädchen einfach die Finger von der Informatik lassen :oops: - zumindest bei mir ist logisches Denken nicht so die Stärke :(
 
J

Jah

Gast
Leider komme ich damit auch nicht so wirklich klar, da ich die einzelnen Zeilen nicht nachvollziehen kann. Gibt es den Quicksort-Alogrithmus eigentlich irgendwo auch komplett erklärt zu "lesen"
Mir fällt es einfach schwer, mich in andere Programme zu lesen und dann kann ich Teile des Programm nicht mal für mich selbst erklären oder weiß nicht, woher einige Dinge da kommen.
Trotzdem danke für die Hilfe.
 

Der Müde Joe

Top Contributor
naja....da gehen mir bald die links aus....google..google...wiki?

http://de.wikipedia.org/wiki/Quicksort
http://www.linux-related.de/coding/sort/sort_quick.htm

wobei die Methode von der FH Flensburg ja eigentlich sehr gur erklärt..finde ich

1. wähle das mittlere Element der Folge als Vergleichs­element x;

setze i = 0 und j = n-1;

wiederhole solange i<=j
1. suche von links das erste Element ai mit ai>=x;

suche von rechts das erste Element aj mit aj<=x;

falls i<=j
1. vertausche ai und aj;

setze i = i+1 und j = j-1;
 
J

Jah

Gast
Der Müde Joe hat gesagt.:
naja....da gehen mir bald die links aus....google..google...wiki?

http://de.wikipedia.org/wiki/Quicksort
http://www.linux-related.de/coding/sort/sort_quick.htm

wobei die Methode von der FH Flensburg ja eigentlich sehr gur erklärt..finde ich

1. wähle das mittlere Element der Folge als Vergleichs­element x;

setze i = 0 und j = n-1;

wiederhole solange i<=j
1. suche von links das erste Element ai mit ai>=x;

suche von rechts das erste Element aj mit aj<=x;

falls i<=j
1. vertausche ai und aj;

setze i = i+1 und j = j-1;

Das Pivot-problem habe ich glaube ich gelöst (ich setze das alte Element einfach + bzw - 1 (je nachdem welches Feld)
Und heute glaube ich auch endlich die Erklärung zu verstehen, die du in deinem Posting hast.
Ich habe jetzt die Zeiger so gesetzt i=0 und j=max (bin mir hier aber nicht sicher, ob das nicht max-1 sein muss (max definiert die Anzahl der Textfelder und damit die Anzahl der Zahlen))

Dann habe ich eine while-schleife im zweiten button (siehe oben) begonnen . . . diese heißt while(i<=j)
Aber wie "suche" ich nun das erste Element von links bzw. rechts heraus, um es mit dem Pivot-Element zu vergleichen?
 
J

Jah

Gast
Oder die Frage vielleicht noch anders (^^): Wie kann man diese Zeiger auf eine einzelne Zahl aus dieser Reihe setzen und diesem "Zeigen" Anweisungen geben?
Mein Problem ist halt einfach, dass wir im Stoff nie so richtig sinnvoll vorwärts gekommen sind und ich absolut kein Ahnung habe, wie das mit den Zeigern programmiertechnisch irgendwie funktionieren soll.

Das Tauschen von Werten ist ja kein Problem, aber bei diesen Zeigern...

Auf alle Fälle müsst ich eine If-Schleife beginnen, um die Zahlen mit der Pivotelement zu vergleichen bzw. sie später auch zu tauschen denke ich.

Also so sinngemäß: Wenn Wert a kleiner als pivot dann rücke Zeiger einen nach rechts (i+1) ansonsten tausche mit dem nächsten Element des Zeigers j, dass seinerseits kleiner ist als pivot

also vielleicht so in der Art
Code:
if(i<pivot){i+1; else{tausche();}} tausche() sollte dann weiter unten noch definiert werden, aber das ist ja nun nicht das große Problem denke ich.

Mein Problem ist einfach, dass ich nur ein Textfeld definiert habe (so muss es sein) und es dann über die Variable max verfielfacht habe . . . nun werden die vielen Textfelder gefüllt, aber ich komme einfach nicht dahinter, wie ich dann z.B. sagen kann: "Wähle Zahl aus Label "oben" und vergleiche".

lg
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Java Quicksort PAP Java Basics - Anfänger-Themen 2
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
M QuickSort und Liste Java Basics - Anfänger-Themen 6
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
G Quicksort Algorithmus Java Basics - Anfänger-Themen 12
Hanschyo Quicksort sortiert von groß nach klein Java Basics - Anfänger-Themen 3
R Quicksort mit Interface Comparable Java Basics - Anfänger-Themen 6
L Quicksort verstehen Java Basics - Anfänger-Themen 3
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 0
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
Liondary Quicksort Java Basics - Anfänger-Themen 20
K Quicksort Fehler in der Implementierung Java Basics - Anfänger-Themen 2
S Quicksort Algorithmus Java Basics - Anfänger-Themen 2
D Java Quicksort Java Basics - Anfänger-Themen 5
A Frage zu QuickSort Java Basics - Anfänger-Themen 9
B Quicksort mit Durchschnitt als Pivot Java Basics - Anfänger-Themen 1
K Quicksort Java Basics - Anfänger-Themen 3
M Quicksort - Probleme Java Basics - Anfänger-Themen 5
T QuickSort implementieren Java Basics - Anfänger-Themen 5
R QuickSort Verständis Problem (?) Java Basics - Anfänger-Themen 2
M Quicksort implementierung Java Basics - Anfänger-Themen 23
E Quicksort Java Basics - Anfänger-Themen 8
Xendarii Quicksort gibt kein Ergebnis aus Java Basics - Anfänger-Themen 13
E QuickSort: Ergebniss speichern Java Basics - Anfänger-Themen 2
P quickSort eines Objekt-Arrays geht nicht! Java Basics - Anfänger-Themen 11
F Stackoverflow bei Quicksort Java Basics - Anfänger-Themen 2
F Quicksort Java Basics - Anfänger-Themen 22
C Quicksort Invariante Java Basics - Anfänger-Themen 2
C QuickSort - Pivot in der Mitte Java Basics - Anfänger-Themen 5
P QuickSort iterativ Java Basics - Anfänger-Themen 5
K Eine Frage zum Quicksort Java Basics - Anfänger-Themen 11
B Quicksort --> Methodenaufruf Java Basics - Anfänger-Themen 10
B QuickSort - Fehler nicht zu finden Java Basics - Anfänger-Themen 2
W Quicksort Problem Java Basics - Anfänger-Themen 3
A Quicksort, #Vergleiche zählen klappt nicht Java Basics - Anfänger-Themen 3
J Quicksort Implementierung-- Exception ArrayOutOfBounds Java Basics - Anfänger-Themen 6
M Fehler in meinem Quicksort! Java Basics - Anfänger-Themen 21
B Quicksort Struktogramm Java Basics - Anfänger-Themen 9
G Frage zu Quicksort Java Basics - Anfänger-Themen 18
0 Quicksort bsp Java Basics - Anfänger-Themen 5
B Quicksort Problem Java Basics - Anfänger-Themen 6
S Mein Quicksort Problem: he method quickSort(int[], int, int) Java Basics - Anfänger-Themen 2
M Quicksort Java Basics - Anfänger-Themen 2
C Quicksort raten Java Basics - Anfänger-Themen 2
K ArrayList sortieren mit Quicksort Java Basics - Anfänger-Themen 3
M Quicksort Java Basics - Anfänger-Themen 4
S Quicksort Programm Java Basics - Anfänger-Themen 7
D Quicksort Java Basics - Anfänger-Themen 3
K Parameterübergabe bei quickSort Java Basics - Anfänger-Themen 6
S QuickSort will mir nicht in den Kopf (an einer Stelle) Java Basics - Anfänger-Themen 14
0 Quicksort Java Basics - Anfänger-Themen 2
M QuickSort Java Basics - Anfänger-Themen 4
J QuickSort - kurze Frage Java Basics - Anfänger-Themen 9
H Quicksort und Rekursiv: Türme von Hanoi Java Basics - Anfänger-Themen 9
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13

Ähnliche Java Themen

Neue Themen


Oben