Hat der InsertionSort Code irgendwelche großen Fehler?

1 Antwort

Es ist kein insertion sort.

public static void insertionSort(int[] arr) {
        int n = arr.length;
        
        for (int i = 1; i < n; i++) {
            int key = arr[i];
            int j = i - 1;
            
            while (j >= 0 && arr[j] > key) {
                arr[j + 1] = arr[j];
                j--;
            }
            
            arr[j + 1] = key;
        }
    }
Woher ich das weiß:Berufserfahrung
IfElseIf 
Fragesteller
 08.07.2023, 13:35

wieso ist das oben kein insertion sort?

0
Schachpapa  08.07.2023, 13:43
@IfElseIf

Insertion sort zieht den ersten Wert des unsortierten Teils raus (bei mir key), geht dann in einer inneren while Schleife bis zu der Stelle, wo der wert eingefügt werden muss, schiebt (einzeln oder alle auf einmal) die werte dazwischen um eine Position weiter, fügt ein und setzt dann die äußere Schleife fort.

Deine innere Schleife hat drei Zuweisungen und geht unnötig bis 0 herunter. Sieht eher aus wie Bubble Sort.

Zwei Wochen bis zur Prüfung? Viel Spass.

0
IfElseIf 
Fragesteller
 08.07.2023, 13:45
@Schachpapa

ne bei bei BubbleSort wird nicht mehr bis index 0 sortiert...hast du überhaupt ne informatischtechnische Ausbildung?

0
IfElseIf 
Fragesteller
 08.07.2023, 13:49
@Schachpapa

diplom ist sowas wie fachschule oder? also eher nicht ist ja eher praktisch angelehnt

0
IfElseIf 
Fragesteller
 08.07.2023, 13:58
@Schachpapa

du musst nicht so angeben, außerdem ist das doch alles in 2 wochen machbar, ich meine ich bin gerade bei single linked listes/double linked lists eigenimplementierung, dann die paar sortieralgos lern ich auswendig falls das dran kommen sollte und dann kommen halt noch bäume, avl bäume, queues , stacks und graphen müsste ja gehen eigentlich oder sag erhlich und nicht weil du mich nicht leiden kannst sag ehrlich ob ich das schaffe, habe zu dem bald hustler Time, also 12 h am tag ganz alleine zeit z uarbeiten, ich steh um 5.30 auf und arbeite von 6 dann bis 18.00 oder 21. Uhr

0
Schachpapa  08.07.2023, 14:07
@IfElseIf

Ich habe nicht angegeben. Du hast nach meiner Qualifikation gefragt und ich habe, da du anscheinend mit dem Begriff Diplom nichts anfangen kannst, den Artikel zum Bologna Prozess nachgeliefert (Kurzfassung: Das frühere Diplom entspricht etwa dem heutigen Master. Den Bachelor als berufsqualifizierenden Abschluss gab's damals noch nicht)

Ich weiß nicht wie gut du lernst, aber drei Vorlesungen in zwei Wochen prüfungsfertig nachzubereiten ist schon ein hehres Ziel. Musst du nur bestehen oder ist die Note relevant?

0
IfElseIf 
Fragesteller
 08.07.2023, 14:09
@Schachpapa

note ist relevant mehr oder weniger, 4,0 würde ausreichen, aber bin eher nicht der "4 gewinnt typ", aber das ist doch nicht so viel eigentlich oder ? wir müssen zudem in der klausur nicht programmierne sondern nur den code verstehen

0
IfElseIf 
Fragesteller
 08.07.2023, 14:14
@Schachpapa

aber jetzt insertion sort kann man ja easy auswendig lernen, wenn ich mal deinen code anschaue dann ist das ja in 10 min auswendig gelernt, das andere müsste man halt mehr verstehen

0
Schachpapa  08.07.2023, 14:19
@IfElseIf

Es reicht vermutlich bei den Sortier-Algorithmen die Idee und damit die Unterschiede zu kennen. Also verstehen vor auswendig lernen.

Viel Erfolg!

0