Tepifsort, Variante 1 (temporäres Indexfeld)

Hierbei handelt es sich um das Grundgerüst eines temporären Indexfeldes. Das Prinzip wird im Folgenden an der Standardvariante von Bubblesort demonstriert.

Eine rekursive Realisierung (Variante 1.b) ist möglich.

Variante 1.a (iterativ)
Typ standard, Beispiel
Eigenschaften iterativ, in-place, stabil, nicht parallelisierbar
Datenstrukturen Felder
Speicher Ω(n) Θ(n) Ο(n)
Laufzeit Ω(n²) Θ(n²) Ο(n²)
Vergleiche n²/2 n²/2 n²/2
Vertauschungen 0 n n

tepifsort(field A, int l, int r) {
  for i:= l to r do {
    B[0][i]:= i;
  }
  bubblesort(B[0], A, l, r);
  for i:= l to r do {
    B[1][B[0][i]]:= i;
  }
  for i:= l to r-1 do {
    s:= B[0][i];
    t:= B[1][i];
    exchange(A[s], A[i]);
    B[0][t]:= s;
    B[1][s]:= t;
  }
}

bubblesort(int[] B, field A, int l, int r) {
  for i:=r downto l+1 do {
    for j:=l to i-1 do {
      if (A[B[j]] > A[B[j+1]]) then {
        exchange(B[j], B[j+1]);
      }
    }
  }
}


Tepifsort, Variante 1