BubbleSort

Status
Nicht offen für weitere Antworten.

kulturfenster

Bekanntes Mitglied
Hallo allerseits,
Ich habe mich mit dem BubbleSort - Algorithmus versucht.

Hier ist meine Version:
Code:
public void sort(int[] a)
	{
		
		for(int j = 0; j < a.length; j++)
		{
			for(int i = 0; i < a.length-1; i++)
			{
				if(a[i] > a[i+1])
				{
					int x = a[i+1];
					a[i+1] = a[i];
					a[i] = x;
				}
			}
		}
	}

Meine Frage nun: Wie kann ich die Laufzeit testen? In der mainMethode lasse ich mir die Zeitdifferenz ausgeben, aber die Millisekunden helfen mir natürlich auch nicht weiter. Wenn ich mich richtig erinnere liegt die Laufzeit des BubbleSort zwischen n² und nlog(n). Stimmt es, dass die Dauer der Sortierung bei 1000 Elementen also zwischen 3000 und 1'000'000 Millisekunden liegt? Mein Wert liegt leider deutlich darunter, weshalb ich wohl irgendwo einen Denkfehler gemacht habe.

andere Frage: Wenn ich der sort-Methode einen bereits sortierten Array übergebe, ist die Laufzeit nicht konstant. Woran liegt das?

Vielen Dank für Tipps und Hilfen!
 
R

Roar

Gast
kulturfenster hat gesagt.:
Mein Wert liegt leider deutlich darunter, weshalb ich wohl irgendwo einen Denkfehler gemacht habe.
ja, die laufzeit O hat nichts mit der ausführungszeit des codes auf deinem rechner zu tun, wär ja noch schöner wenn bubblesort auf meinem supercomputer ne geringere 'laufzeit' hat als bei dir ;)
 
S

SlaterB

Gast
teste mit n= 1000 und n = 5000

wenn's bei 5-fachen n 25x so lange dauert, dann ist es quadratisch


(wenn n=1000 zu schnell ist, dann suche dir eine Zahl bei der es ~1 sek dauert und ver-x-fache dann)
 

kulturfenster

Bekanntes Mitglied
ok, danke. Quadratisch scheints nicht zu sein.

Noch wegen vorhin: Wieso ist die Laufzeit bei einer geordneten Liste nicht kostant??

Und noch was anderes:
Code:
public void sort2(int n, int[] a)
	{
		if(n == a.length-1) return;
		else {
			if(a[n] > a[n+1]){
				int x = a[n+1];
				a[n+1] = a[n];
				a[n] = x;
			}
			sort2(n+1, a);
		}
	}
Dies ergibt leider ab ca. 1000 Elementen einen StackOverFlow? Wie kann ich den umgehen?
 
S

SlaterB

Gast
ganz einfach: hör auf, das rekursiv zu machen ;)

> Noch wegen vorhin: Wieso ist die Laufzeit bei einer geordneten Liste nicht kostant??

auf was bezieht sich 'vorhin'?
und wieso konstant? muss nicht jedes Element wenigstens einmal angeschaut werden?
 

kulturfenster

Bekanntes Mitglied
ganz einfach: hör auf, das rekursiv zu machen icon_wink.gif
Wie weiss ich dann, wann ich von Rekursion Gebrauch machen soll? Einfach ausprobieren und wenns nicht funktioniert, sein lassen?

und wieso konstant? muss nicht jedes Element wenigstens einmal angeschaut werden?
Doch, klar. Aber angenommen, ich habe einen Array mit 5 Elementen, a = {1,2,3,4,5}.
So werden 4 Vergleichsoperationen (a < a[i+1]), die allesamt true ergeben, durchgeführt. Wenn ich das mehrmals durchlaufen lasse, sollte es doch immer gleich lange dauern, also konstant sein!?
 
S

SlaterB

Gast
ja, sollte dann konstant sein, +-100ms musst du aber immer einrechnen,
das ist normale Ungenauigkeit/ andere Systemprozesse und ähnliches

evtl. wird beim ersten Durchlauf auch Speicher belegt oder ähnliches,
10 Durchläufe liefern bessere Vergleichszahlen, alles was unter 1 Sec dauert ist eh zu kurz

> Wie weiss ich dann, wann ich von Rekursion Gebrauch machen soll?

na hier ist doch offensichtlich, dass die Rekursionstiefe genau n entspricht,
um im Tausender-Bereich ist Rekursion generell gefährlich

viel mehr Spass hast du z.B. bei einem Sortieralgorithmus Divide & Conquer im logarithimischen Maß, z.B. mit Intervallhalbierung,

da brauchst du bei 1000 Elementen nur eine Tiefe ~10
(1000, 500, 250, 125, 60, 30,15,7,3,..)

bis du da bei über 100 Intervallhalbierung bist ist dein Speicher eh voll, da ist der StackTrace sicher ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Generischer Bubblesort Java Basics - Anfänger-Themen 19
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
H Bubblesort-Algorithms Java Basics - Anfänger-Themen 14
I Bubblesort Java Basics - Anfänger-Themen 1
L Bubblesort in Batch Script Java Basics - Anfänger-Themen 15
D Bubblesort Java Basics - Anfänger-Themen 2
G Bubblesort Array der Größe 10 Java Basics - Anfänger-Themen 1
M Bubblesort ohne Array Java Basics - Anfänger-Themen 30
V_Fynn03 Erste Schritte BubbleSort Quelltext funktioniert noch nicht Java Basics - Anfänger-Themen 1
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
R Erste Schritte Einsteiger-Video Bubblesort Bewertung Java Basics - Anfänger-Themen 11
D Array/Bubblesort Fehlermeldungen Java Basics - Anfänger-Themen 1
U BubbleSort Problem Java Basics - Anfänger-Themen 2
L Array und Bubblesort Java Basics - Anfänger-Themen 4
L Frage zu BubbleSort Algorithmus Java Basics - Anfänger-Themen 2
T BubbleSort Java Basics - Anfänger-Themen 9
O Bubblesort allgemeiner schreiben Java Basics - Anfänger-Themen 5
J Interface Bubblesort soll Arrays beliebiger Referenztypen sortieren können. Java Basics - Anfänger-Themen 5
N Mein Bubblesort sortiert mein Array nicht Java Basics - Anfänger-Themen 2
E BubbleSort Java Basics - Anfänger-Themen 2
J Erste Schritte Bubblesort Java Basics - Anfänger-Themen 6
G Array mit BubbleSort sortieren Java Basics - Anfänger-Themen 2
N Bubblesort Programm funktioniert nicht Java Basics - Anfänger-Themen 19
R BubbleSort Java Basics - Anfänger-Themen 4
R BubbleSort Java Basics - Anfänger-Themen 15
A BubbleSort Java Basics - Anfänger-Themen 7
B BubbleSort Java Basics - Anfänger-Themen 10
R BubbleSort Java Basics - Anfänger-Themen 6
C Klassen BubbleSort was passiert mit dem Index ? Java Basics - Anfänger-Themen 2
B Sortiermethode bei Bubblesort Java Basics - Anfänger-Themen 15
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
M Laufzeitanalyse Bubblesort Java Basics - Anfänger-Themen 7
T BubbleSort Java Basics - Anfänger-Themen 2
P BubbleSort-Methode Java Basics - Anfänger-Themen 18
M BubbleSort (Sortieralgorithmus) Java Basics - Anfänger-Themen 28
B Bubblesort Java Basics - Anfänger-Themen 70
G Bubblesort ohne Schleifen Java Basics - Anfänger-Themen 10
F Bubblesort, Insertsort Java Basics - Anfänger-Themen 2
K BubbleSort Hausaufgabe Java Basics - Anfänger-Themen 20
B Bubblesort-Algorithmus und Testklasse Java Basics - Anfänger-Themen 5
c_sidi90 Array mit Bubblesort sortieren Java Basics - Anfänger-Themen 8
B Java Bubblesort Java Basics - Anfänger-Themen 5
F Bubblesort---Frage von Anfänger Java Basics - Anfänger-Themen 2
E BubbleSort kleiner Fehler? Java Basics - Anfänger-Themen 14
B BubbleSort Java Basics - Anfänger-Themen 5
L Bubblesort: Exception in Thread "main" Java Basics - Anfänger-Themen 5
K Einfaches Bubblesort Java Basics - Anfänger-Themen 11
W Problem mit BubbleSort und Array Java Basics - Anfänger-Themen 10
Spin taschenrechner incl bubblesort Java Basics - Anfänger-Themen 5
G Bubblesort Java Basics - Anfänger-Themen 2
Binary.Coder Bubblesort in einfachen unmissverständlichen Sätzen Java Basics - Anfänger-Themen 2
B Bubblesort Verfahren Java Basics - Anfänger-Themen 2
C Bubblesort Java Basics - Anfänger-Themen 5
I BubbleSort-Algorithmus Java Basics - Anfänger-Themen 8
G Bubblesort Java Basics - Anfänger-Themen 23
G Bubblesort Java Basics - Anfänger-Themen 15
T Bekomme Fehler mit Bubblesort Java Basics - Anfänger-Themen 2
T Zahlen mit Bubblesort sortieren Java Basics - Anfänger-Themen 2
D Bubblesort und Array Java Basics - Anfänger-Themen 6
T Bubblesort Java Basics - Anfänger-Themen 5
L Bubblesort funzt nicht Java Basics - Anfänger-Themen 3
N bubblesort Java Basics - Anfänger-Themen 4
T BubbleSort optimieren ??? Java Basics - Anfänger-Themen 26

Ähnliche Java Themen

Neue Themen


Oben