WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 11.07.2006, 20:56   #1
coolbininet
Hero
 
Registriert seit: 19.09.2001
Alter: 46
Beiträge: 859


coolbininet eine Nachricht über AIM schicken coolbininet eine Nachricht über Yahoo! schicken
Frage Bubblesort rekursiv geht das nicht? JAVA

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!
coolbininet ist offline   Mit Zitat antworten
Alt 12.07.2006, 12:53   #2
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

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)
jak ist offline   Mit Zitat antworten
Alt 12.07.2006, 13:36   #3
xandl33
Elite
 
Registriert seit: 07.02.2003
Beiträge: 1.037


Standard

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.
xandl33 ist offline   Mit Zitat antworten
Alt 12.07.2006, 20:27   #4
coolbininet
Hero
 
Registriert seit: 19.09.2001
Alter: 46
Beiträge: 859


coolbininet eine Nachricht über AIM schicken coolbininet eine Nachricht über Yahoo! schicken
Standard Danke für die Hilfe!

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!
coolbininet ist offline   Mit Zitat antworten
Alt 13.07.2006, 10:10   #5
xandl33
Elite
 
Registriert seit: 07.02.2003
Beiträge: 1.037


Standard

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;
}

}
xandl33 ist offline   Mit Zitat antworten
Alt 13.07.2006, 10:17   #6
xandl33
Elite
 
Registriert seit: 07.02.2003
Beiträge: 1.037


Standard

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
xandl33 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:23 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag