Rekursiver InsertionSort ohne Schleife

Saggerrr

Mitglied
Hallo, ich würde gerne eine InsertionSort rekursiv schreiben und komplett auf Schleifen verzichten wollen. Es soll zufällig generierte Arrays sortieren können, welche auch unterschiedlich lang sein können.
Ich versuche mich schon seit einigen Stunden daran und komme einfach nicht weiter.
Dies ist mein Ansatz, doch wenn ich ihn ausführe, taucht "Exception in thread "main" als Fehler auf an der "else if" Stelle. Kann mir einer weiterhelfen?

public static int[] sortR(int[] arr) {
int upto = (arr.length+1)-arr.length;
int current = upto;
if(upto == arr.length)
{
return arr;
}
else if(arr[current] >= arr[current -1])
{
upto++;
}
else {
int tmp = arr[current];
arr[current] = arr[current-1];
arr[current-1] = tmp;
}
return arr;
 

Saggerrr

Mitglied
Die Exception fliegt direkt raus. Die Arrays werden gebildet mit
public static void main(String[] args) {
Random rng = new Random();
boolean passed = true;

passed &= test(new int[0]);
{
int[] arr = new int[1];
arr[0] = rng.nextInt(20) - 7;
passed &= test(arr);
}
for(int i = 0; i < 10; ++i) {
int[] arr = new int[rng.nextInt(20)];
for(int j = 0; j < arr.length; ++j) {
arr[j] = rng.nextInt(20) - 7;
}
passed &= test(arr);
}

if(passed) {
System.out.println("All tests passed.");
} else {
System.out.println("Some tests failed!");
}
}
Aber da das eine gegebene Formel war, sollte hier auch nichts dran falsch sein.
 

mrBrown

Super-Moderator
Mitarbeiter
Die Exception fliegt direkt raus.
Ja, aber die Fehlermeldung sollte mehr als nur Exception in thread "main" enthalten.

Aber da das eine gegebene Formel war, sollte hier auch nichts dran falsch sein.
Ist dir aufgefallen, dass dein Code nirgends aufgerufen wird?

Ich versuchs trotzdem mal:

Der erste Test findet mit einem Array der Länge 1 statt, current ist immer 1, also wird in dem Array mit Länge 1 der Wert an Stelle 1 abgefragt, was eine Exception wirft.
 
X

Xyz1

Gast
Der Sinn des Unterfangens erschließt sich mir noch nicht:
Java:
    public static void main(String[] args) {
        List<Integer> list = // ...
        ssort(list, 0, 0);
        System.out.println(list);
    }

    static void ssort(List<Integer> list, int i, int j) {
        if (j == list.size()) {
            return;
        }
        if (i == 0) {
            list.add(i, list.remove(j));
            i = j++;
        } else if (list.get(i) <= list.get(j)) {
            list.add(i+1, list.remove(j));
            i = j++;
        } else {
            i--;
        }
        ssort(list, i, j);
    }

  • optimiert
  • rekursiv (auch end....)
  • stabil
hth^^, bis morgen
 

Saggerrr

Mitglied
Tut mir Leid, aber aus dem Code werde ich nicht schlau. Trotzdem Danke. Insbesondere weil Eclipse mir List als Fehlerhaft zuweißt und weil die Klassen kein Rückgabearray haben
 
X

Xyz1

Gast
Java:
import java.util.Arrays;
import java.util.List;

----

Von Arrays hast du nüschts gesagt. Insbesondere weil das Einfügen resp das Aufschieben der Elements dann selber gemacht werden muss, wenn es denn 'full in-place' sein soll.

----

und naja ein Anfänger kann das vielleicht nicht verstehen, anderseits aber hast du gefragt. Du wirst allerdings keine bessere Implementierung deiner Fragestellung finden.

---

Ggf einfach nochmal sagen was du nicht verstehst. :)
 
X

Xyz1

Gast
Doch ein Fehler meinerseits:
Java:
    static void ssort(List<Integer> list, int i, int j) {
        if (j == list.size()) {
            return;
        }
        if (i == 0 || list.get(i - 1) <= list.get(j)) {
            list.add(i, list.remove(j));
            i = ++j;
        } else {
            i--;
        }
        ssort(list, i, j);
    }

Das lag aber an das nachträglich eingefügte +1:
Java:
            list.add(i+1, list.remove(j));
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
J Rekursiver Algorithmus Java Basics - Anfänger-Themen 9
K Rekursiver Vergleich von Textmuster und Text Java Basics - Anfänger-Themen 2
M Probleme bei rekursiver Zuordnung Java Basics - Anfänger-Themen 1
H Rekursiver Aufruf Java Basics - Anfänger-Themen 8
K Methoden Fibonacci in Array mit rekursiver Methoden Java Basics - Anfänger-Themen 19
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
T Rekursiver Methodenaufruf funktioniert nicht Java Basics - Anfänger-Themen 7
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
B Quadratwurzel nach Heron in rekursiver Darstellung Java Basics - Anfänger-Themen 1
A Heap Space Error bei rekursiver Suche in Dateien trotz nur einer Zeile im Speicher Java Basics - Anfänger-Themen 26
W sysout in rekursiver methode Java Basics - Anfänger-Themen 4
A Rekursiver Pseudocode Java Basics - Anfänger-Themen 4
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
S Probleme bei Ausgabe von rekursiver Methode (List) Java Basics - Anfänger-Themen 16
J Rekursiver Horner-Schema-Algorithmus - Verstehe ich ihn richtig? Java Basics - Anfänger-Themen 2
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
O Faktorielle mit rekursiver Methode berechnen Java Basics - Anfänger-Themen 6
S Laufzeit bei rekursiver Methode messen Java Basics - Anfänger-Themen 6
N Unerklärlich: Rekursiver Algorithmus gibt falschen Datentyp zurück... Java Basics - Anfänger-Themen 4
J rekursiver Methodenaufruf Java Basics - Anfänger-Themen 12
D Datentypen Rekursiver Datentyp Java Basics - Anfänger-Themen 8
S Werte von rekursiver Methode Java Basics - Anfänger-Themen 5
Q rekursiver algo. Java Basics - Anfänger-Themen 16
M Potenz mithilfe rekursiver Funktion Java Basics - Anfänger-Themen 13
F Rekursiver Algorithmus Java Basics - Anfänger-Themen 5
C Frage zu negativen und positiven Exponenten in rekursiver Methode Java Basics - Anfänger-Themen 11
G Rekursiver Aufruf einer JSP über eine JavaScript-Funktion Java Basics - Anfänger-Themen 5
G PRoblem mit rekursiver float additions methode Java Basics - Anfänger-Themen 9
B rekursiver Funktionsaufruf Java Basics - Anfänger-Themen 2
E fehlermeldung bei rekursiver grafik Java Basics - Anfänger-Themen 11
F Problem bei rekursiver Binärsuche Java Basics - Anfänger-Themen 2
T Rekursiver Algorithmus: Türme von Hanoi Java Basics - Anfänger-Themen 8
S Ist das noch Insertionsort? Java Basics - Anfänger-Themen 3
B Zufallszahlen & Laufzeitmessung (insertionSort) Java Basics - Anfänger-Themen 7
N InsertionSort sortiert erste Zahl im Array nicht mit? Java Basics - Anfänger-Themen 6
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2
B InsertionSort Java Basics - Anfänger-Themen 12
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
S Insertionsort probleme Java Basics - Anfänger-Themen 2
P Insertionsort Java Basics - Anfänger-Themen 4
S SelectionSort und InsertionSort Java Basics - Anfänger-Themen 1
M insertionsort Java Basics - Anfänger-Themen 9
B insertionsort Java Basics - Anfänger-Themen 12
T InsertionSort Problem Java Basics - Anfänger-Themen 2
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
P Main Methode scheint Constructor aufzurufen, ohne dass es so gecoded ist Java Basics - Anfänger-Themen 2
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
O HashTable kann ohne Performance-Verlust in Multithreaded-Anwendungen eingesetzt werden. Java Basics - Anfänger-Themen 6
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
P 2n Potenzieren ohne Math.pow oder pow Java Basics - Anfänger-Themen 8
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
Zentriks Hilfe zu Sieb des Eratosthenes ohne boolean Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
JavaBeginner22 TextArea, ohne Zeilenumbruch? Java Basics - Anfänger-Themen 4
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
S Was macht ++ ohne Schleife? Java Basics - Anfänger-Themen 4
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
U Methode wird genutzt, ohne dass ich die aufrufe? Java Basics - Anfänger-Themen 4
B Jar Dateien ohne IDE verwenden? Java Basics - Anfänger-Themen 1
M Wie verknüpfe ich eine Bedingung mit einer Methode ohne if-Verzweigung & Bedingungsoperator? Java Basics - Anfänger-Themen 2
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
S Chars vergleichen ohne Betrachtung der Groß und Kleinschreibung Java Basics - Anfänger-Themen 7
javapingu Variablenwerte ändern ohne return Statement? Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
E Meine JCombobox werte an ohne selectiert zu haben Java Basics - Anfänger-Themen 6
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
M for schleife ohne geschweifte Klammer Java Basics - Anfänger-Themen 15
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
L Zufälligen Zahlencode, ohne mehrfacher Verwendung einer Ziffer Java Basics - Anfänger-Themen 15
Sinan Arrays auflisten ohne Wiederholung Java Basics - Anfänger-Themen 28
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Variable in for Schleife ansprechen ohne Array ? Java Basics - Anfänger-Themen 25
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
S Teilen ohne Rest Java Basics - Anfänger-Themen 15
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
C NumberFormatException: null ohne Ausnahmebehandlung stoppen Java Basics - Anfänger-Themen 7
P Methode trim() ohne StringBuilder Java Basics - Anfänger-Themen 1
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
L Zufälliges Objekt aus der ArraylList ohne java.util.Random Java Basics - Anfänger-Themen 56
Z Methode zum Heraufinden von Anagrammen ohne Java API, Ausnahme String Java Basics - Anfänger-Themen 14
Z Attribut ändern ohne Kontrollstruktur Java Basics - Anfänger-Themen 2
R Boolean value ohne Kontrollstrukturen ändern Java Basics - Anfänger-Themen 5
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben