Rekursionsformel

ChillStudent

Mitglied
Hallo, hier sind 2 Aufgaben:

1. Geben Sie eine Rekursionsformel für die Laufzeit des Aufrufs
strangeSum(a, 0, n) mit n = a.length = 3^k an. Eine explizite Formel ist nicht gefordert.

Code:
static int strangeSum(int[] a, int left, int right) { 
  int sum = 0; 
  if (right - left < 100) { 
    for (int i = left; i < right; ++i) { 
      sum += a[i]; 
    } 
  }else { 
    int third = (right - left) / 3; 
    for (int i = left + third; i < left + 2 * third; ++i) { 
      sum += a[i]; 
    } 
    sum += strangeSum(a, left, left + third); 
    sum += strangeSum(a, left + 2 * third, right); 
  } 
  return sum; 
}

Lösung:

................cn, n < 100
T(n) ≤ {
................2T(n/3) + cn, sonst



2. In der Vorlesung hatten wir InsertionSort mit Hilfe verschachtelter Schleifen in Java implementiert. Alternativ dazu lässt sich der Algorithmus wie folgt als Rekursion auffassen: Das Sortieren eines Arrayabschnitts a[0] ... a[n-1] wird zurückgeführt auf das Sortieren des Arrayabschnitts a[0] ... a[n-2], gefolgt vom Einfügen des Elements a[n-1] in dieses sortierte Teilfeld. Geben Sie eine Rekursionsformel für die Laufzeit dieses Algorithmus an (die explizite Formel muss nicht hergeleitet werden).

Lösung:

................O(1), n = 1
T(n) ≤ {
................T(n - 1) + O(n), n > 1




Liege ich denn richtig mit den Lösungen?
 

Ähnliche Java Themen

Neue Themen


Oben