![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Hero
![]() |
![]() Hallo Leute!
Frage mich, ob ich den Bubble Sort auch rekursiv lösen kann. Habe da folgenden Code gebastelt. Problem die Rekursion geht mir das Array nur einmal durch. Was ist da falsch, oder geht das rekursiv nicht? public class bubblehope { static int[] zahlen = new int[4]; static boolean sorted = false; static int zaehler = 0, temp = 0; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int u = 55; for (int i=0; i < zahlen.length; i++) { zahlen[i] = u--; } zahlen = bubblesort(); for (int i=0; i < zahlen.length-1; i++) { if (zahlen[i] < zahlen[i+1]) { sorted = false; zahlen=bubblesort(); } else { System.out.println("unsortiert!"); break; } } for (int i=0; i < zahlen.length; i++) { System.out.println(zahlen[i]); } } public static int[] bubblesort() { //System.out.println(zaehler); if (!sorted) { sorted = true; if (zaehler >= zahlen.length-1) { return zahlen; } if (zahlen[zaehler] > zahlen[zaehler+1]) { temp = zahlen[zaehler]; zahlen[zaehler] = zahlen[zaehler+1]; zahlen[zaehler+1] = temp; sorted = false; } zaehler++; bubblesort(); } return zahlen; } } Bitte und danke um Hilfe *g*! Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst! Website RI Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden. |Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker| If you want to see the Sky, fuck a Duck and learn to fly! Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten! Möge die MACHT mit uns sein! |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 13.06.2001
Beiträge: 1.830
|
![]() Das schöne an bubblesort ist doch das er extrem simpel ist. Wenn du einen rekursiven Sortieralgorithmus implementieren willst, warum nimmst du nicht quicksort?
Demo: http://java.sun.com/docs/books/tutor...ads/index.html Zu deinem Problem: Falls du eine IDE (Eclipse, NetBeans, Borland JBuilder, ...) verwendest geh das Programm mal Schritt für Schritt in einem Debugger durch und schau' dir an was passiert. Ich vermute mal, das du nur die innere Schleife des Bubblesort implementiert hast, schau dir mal die Implementierung hier an: http://www.oberstufeninformatik.de/i...ubblesort.java Alles in allem ist bubblesort aber nicht besonders geeignet für eine Rekursive implementierung. BTW.: Wenn du die [ code] [ /code] (ohne Leerzeichen) Tags verwendest, sieht man die Einrückungen, das ist leichter lesbar. jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona) Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing. \"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra) |
![]() |
![]() |
![]() |
#3 |
Elite
![]() Registriert seit: 07.02.2003
Beiträge: 1.037
|
![]() stimmt du müßtest noch ne schleife in deinen bubblesort integrieren, da du den sort ja nur solange rekursiv aufrufst bis zahler => zahlen.length-1 ist, an dieser stelle bist am arrayende angekommen und hörst mit der rekursion auf.
|
![]() |
![]() |
![]() |
#4 |
Hero
![]() |
![]() Hallo xandl33!
Wo genau muss ich da ne Schleife einbauen? Stehe gerade auf der Leitung! Bitte poste, wenn möglich den Code! Grüße Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst! Website RI Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden. |Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker| If you want to see the Sky, fuck a Duck and learn to fly! Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten! Möge die MACHT mit uns sein! |
![]() |
![]() |
![]() |
#5 |
Elite
![]() Registriert seit: 07.02.2003
Beiträge: 1.037
|
![]() public class Bubblehope {
static int[] zahlen = new int[4]; static boolean sorted = false; static int zaehler = 0, temp = 0; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int u = 55; for (int i=0; i < zahlen.length; i++) { zahlen[i] = u--; } for (int i=0; i< zahlen.length;i++){ sorted=false; zaehler=0; zahlen = bubblesort(); } for (int i=0; i < zahlen.length-1; i++) { if (zahlen[i] > zahlen[i+1]) { System.out.println("unsortiert!"); break; } } for (int i=0; i < zahlen.length; i++) { System.out.println(zahlen[i]); } } public static int[] bubblesort() { //System.out.println(zaehler); if (!sorted) { sorted = true; if (zaehler >= zahlen.length-1) { return zahlen; } if (zahlen[zaehler] > zahlen[zaehler+1]) { temp = zahlen[zaehler]; zahlen[zaehler] = zahlen[zaehler+1]; zahlen[zaehler+1] = temp; sorted = false; } zaehler++; bubblesort(); } return zahlen; } } |
![]() |
![]() |
![]() |
#6 |
Elite
![]() Registriert seit: 07.02.2003
Beiträge: 1.037
|
![]() hi,
müßte so eigentlich gehen (hab aber nur sehr kurz drüber gschaut, bin zur zeit im stress, also teste das programm mit verschiedenen zahlenreihen). dein problem war das du im main die if anweisung if (zahlen[i]<zahlen[i+1]){ bubblesort(); } oder so ähnlich ghabt hast. dadurch das du aber die zahlen schon einmal sortiert hast hast ist im array 54,53,52,55 gstanden und somit die bubblesort funtkion nie zum einsatz gekommen. zusätzlich darfst du nicht vergessen den zähler nach jeder rekursion wieder auf 0 zu setzen. kannst dir ja bei gelegenheit das buch runterladen http://www.galileocomputing.de/katal...584A2-CL5-kM8E alternativ findest du auch unter www.javabuch.de ein buch im html format das sich sehr gut fürs nachschlagen eignet (würde in gedruckter form 60€ kosten). wenn du weiter java programmieren willst schau dir mal eclipse. lg andi |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|