Hallöle,
ich beschäftige mich mit Sortieralgorithmen und habe nun so einige, auch anspruchsvollere wie Quicksort verstanden und mit Java umsetzen können.
Nun stehe ich ganz schön auf dem Schlauch, was zwei viel einfachere Algorithmen angeht.
Ich habe auf einer Webseite vor längerer Zeit (habe leider den Link nicht mehr finden können…) eine Umsetzung dazu gesehen, für Insertionsort und dazu auch gleich die passende Erweiterung für Shellsort.
Nun stehe ich vollkommen auf dem Schlauch, weil ich nicht so ganz nachvollziehen kann, wie das arbeitet. Ich weiß, wie beide Algorithmen in der Theorie funktionieren, kann aber die spezifischen Algorithmen an dieser Stelle nicht so ganz nachvollziehen.
zu Insertionsort:
for(int i=1; i<numbers.length; i++) {
int temp = numbers**;
int j = i;
while(j>0 && numbers[j-1]>temp) {
numbers[j] = numbers[j-1];
j--;
}
numbers[j] = temp;
}```
Und dann Shellsort:
```int[] numbers = {19, -14, 11, -18, -1, 5, 14, 6, -2, 17, 13, -17, 15, 10, 7, 12, -7, -16, -19, -8, 8, 4, 16, -10, 9, -11, 20, -6, 1, -20, 3, 0, -13, 18, -4, -3, -9, -12, 2, -15, -5};
int[] cols = {1391376, 463792, 198768, 86961, 33936, 13776, 4592, 1968, 861, 336, 112, 48, 21, 7, 3, 1};
for(int k=0; k<cols.length; k++) {
int h = cols[k];
for(int i=h; i<numbers.length; i++) {
int j = i;
int temp = numbers[j];
while(j>=h && numbers[j-h]>temp) {
numbers[j] = numbers[j-h];
j -= h;
}
numbers[j] = temp;
}
}```
Könnte mir einer von euch bitte erläutern, wie der Insertionsortalgorithmus da oben versucht zu arbeiten?
Ich denke, dass ich dann auch den passenden Shellsort dazu verstehen werde.
Ich danke euch im Voraus.
Schöne Grüße und einen tollen Samstag
Gruß
FranzFerdinand