![]() |
[Hilfe] Arrays sortieren mit Bubblesort..
Hey,
Ich habe folgendes Programmiert : Code:
package sortierenen; Code:
package sortierenen; Das erstellen und füllen des Arrays ist kein Problem, nur das anschliessende sortieren bereitet mir Probleme... Er schmeisst mir 'ne "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5" aus und ich kriege total viele nullen in meiner Konsole ausgegeben und die Zahlen wie wild rumgemixt... "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at sortierenen.Code.Bubblesort(Code.java:20) at sortierenen.Code_Start.main(Code_Start.java:11) 5 0 4 0 0 9 0 8 " Kann bitte mal einer drüber schauen und mir helfen?? Danke! Lg, Dijar! EDIT : Sprache ist Java , in Eclipse geschrieben :P UND es ist wichtig :/ |
Ich habe jetzt weiter nochmal etwas dran rumprobiert... :
Code:
package sortierenen; Jetzt sieht meine ausgabe halt wie folgt aus ... " ungeordnet12 ungeordnet53 ungeordnet66 ungeordnet41 ungeordnet31 41 31 41 31 31 " Das Array erstellen klappt also soweit schonmal , nur wie kann ich es änders das die Zahlen auch geordnet rauskommen und sich nicht doppeln wie hier gerade der Fall ist?? |
ArrayIndexOutOfBoundsException
Das bedeutet, dass du auf eine Feldposition schreiben willst, die nichtmehr existiert. Edit: Du erstellst die Zahlen zufällig, da ist es nur natürlich, dass sie doppelt vorkommen. Oder was genau meinst du? Edit2: Ich glaube, ich habe jetzt kapiert was du meinst. :D Hier die Klasse: Code:
public class code { Edit3: Doch er stimmt. :D |
Erstmal danke für die Antwort..
Ich habe mal mein programm soweit verändert um zu schauen was rauskommt.. Wenn ich das aber richtig sehe , ist das einfach eine zweite Ausgabe des Feldes mit weiteren rnd Werten ... Wie kann ich die Zahlen des ersten Arrays sortiert ausgeben? Bzw. der Sortieralgorythmus ist von meinem Lehrer so übernommen :/ |
Ich danke dir vielmals :) der Tag ist gerettet *g*
|
Sagen wir's so ... Er kann es , er hat aber auch zugegeben das dies nicht die beste Möglichkeit ist aber einer der einfachsten seiner Meinung nach... Ist nur ein allgemeiner Algorythmus als Grundlage für die Klausur ;)
|
Ja, ich habe mich verguckt.. er stimmt doch sry dafür.
Übernimm einfach mal meine gepostete Klasse, bei mir wird das hier z.B. ausgegeben: Code:
ungeordnet 46 |
Code:
import java.lang.Math; |
was denn? der bubble-sort von ccursed ist doch völlig ok. ist ja eh nur für didaktische zwecke.
das einzige was mich stört: Code:
if (boolean_value) return true; Code:
if (boolean_value == true) return true; wie wärs mit Code:
return (boolean_conditon); |
^Guter Einwand, eigentlich mach ichs mittlerweile immer so, aber hatte es mir ganz am anfang anders angewöhnt
|
An dieser Stelle würde ich garkeine Funktion implementieren.
Code:
if(isBigger(list, j-1, j)) Warum also nicht einfach Code:
if (list[j-1] > list[j]) |
Die Klasse ist exportiert und schnell umgeschrieben aus einem Gerüst für mehrere Sorter, heißt dass die zu sortierende Liste ursprünglich in der gesamten Klasse vorhanden war und somit isBigger() nur mit 2 int Parametern aufgerufen wurde.
Es gab auch noch die Methode swap(int a, int b), welche in der Urklasse vorhanden war und in der die Anweisungen zum Tauschen standen. Aber: Warum sollte ich, wenn ich 2 Arrays von Integern durchsuche, foreach benutzen ? Dabei gebe ich doch die Kontrolle über die Reihenfolge der Vergleiche ohne Grund komplett ab. |
Zitat:
wg. der didaktik finde ich es schon sinnvoll eine eigene vergleichsfunktion anzugeben, da diese existentiell fürs sortieren ist. selbst man 3 qsort Code:
void qsort(void *base, size_t nmemb, size_t size, bei einem einfachen if geht das eher unter. am saubersten wird sortieren noch von funktionalen sprachen beschrieben: z.b. [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] da kannst du listen(arrays) vom typ a erst sortieren, wenn eine ordnung auf dem typen a existiert. [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] aber hier bin ich wahrscheinlich schon abgeschweift... wie dem auch sei, auch wenn isBigger() in diesem fall trivial ist, finde ich es in diesem context angebracht. |
@kanukidz:
Zitat:
ui,ui... finde einfach viele fehler bei deinen aussagen :P |
Ich suche nebenbei nicht umsonst Hilfe... Als Schüler sind meine Codes noch nicht wirklich berauschend :P
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.