Einführung in die Informatik I - Lösungen zu Übung 3.pdf

Assignments
Uploaded by Anonymous User at 2019-02-28
Description:

Lösung zur Übung 3

 +1
124
2
Download
Könnte jemand diesen Teil vielleicht erklären ?
Hier werden in jedem Schleifendurchlauf einfach nur zwei Einträge eines Vektors getauscht. Nimmt man einfach mal an, das i erstmal gleich 1 ist, so wird der 1. Ertrag in der Variable "temp" zwischengespeichert und dann wird der 1. Eintrag mit dem letzten Eintrag des Vektors überschrieben, anschließend wird der letzte Eintrag mit dem zwischengespeicherten Wert aus "temp" überschrieben. Somit wurde beim ersten Schleifendurchlauf der erste mit dem letzten Eintrag "getauscht". Der Schleifenindex i wird anschließend auf 2 erhöht, sodass im nächsten Schleifendurchlauf dann der zweite Eintrag mit dem zweitletzten Eintrag getauscht werden kann. Anschließend wird der dritte Eintrag mit dem drittletzten getauscht usw., bis der Ganze Vektor gedreht ist.
Warum L/2 ?
Es wird (in der Zeile mit dem if) das erste Element des Vektor mit dem letzten Element verglichen, dann das zweite Element mit dem zweitletzten, dann das dritte mit dem drittletzten usw. Wenn der Index i also bis L/2 läuft, wird sozusagen die gesamte vordere Hälfte des Vektors mit der hinteren Hälfte des Vektors verglichen und deshalb macht es keinen Sinn den Index i noch weiter laufen zu lassen, da es nur eine Wiederholung der gemachten Vergleiche bedeuten würde. Wäre der Intervall für i kürzer als L/2, also wenn i nicht bis L/2 laufen würde, so werden nicht alle Elemente des Vektors verglichen und es kann keine Aussage darüber getroffen werden ob der Vektor ein "Palindrom" ist.