algorithmen:algolektion03
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| algorithmen:algolektion03 [17.02.2011 14:23] – Frank Schiebel | algorithmen:algolektion03 [09.11.2014 15:47] (aktuell) – Stefan Gaum | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | [[algorithmen: | + | [[algorithmen: |
| - | ====== Sortieren ====== | + | ====== |
| Sortierverfahren sind von großer Bedeutung für die Informatik, siehe auch | Sortierverfahren sind von großer Bedeutung für die Informatik, siehe auch | ||
| Zeile 30: | Zeile 30: | ||
| - | ===== Sortieren durch Auswahl (Selection Sort) ===== | + | ===== Sortieren durch Auswahl (Selectionsort) ===== |
| + | [[http:// | ||
| Beim Sortieren durch Auswahl wird das kleinste Element des unsortierten Bereichs gesucht, ausgewählt und schließlich mit dem Grenzelement vertauscht. Die Grenze wird anschließend um einen Schritt weitergeschoben, | Beim Sortieren durch Auswahl wird das kleinste Element des unsortierten Bereichs gesucht, ausgewählt und schließlich mit dem Grenzelement vertauscht. Die Grenze wird anschließend um einen Schritt weitergeschoben, | ||
| Zeile 42: | Zeile 43: | ||
| Im nachstehenden Struktogramm wird eine variable Anzahl von Elementen sortiert. Die Variablen **// | Im nachstehenden Struktogramm wird eine variable Anzahl von Elementen sortiert. Die Variablen **// | ||
| - | {{: | + | {{: |
| + | [[http:// | ||
| ===== Aufgaben ===== | ===== Aufgaben ===== | ||
| Zeile 50: | Zeile 52: | ||
| - Sortiere die Zahlen 7, 5, 3, 8, 4, 6, 1, 2, 9 auf einem Blatt Papier nach dem Auswahlverfahren. | - Sortiere die Zahlen 7, 5, 3, 8, 4, 6, 1, 2, 9 auf einem Blatt Papier nach dem Auswahlverfahren. | ||
| - | - Folge dem [[algorithmen: | + | - Folge dem Struktogramm und programmiere einen code für diesen Sortieralgorithmus. |
| - | | + | |
| + | | ||
| - | ---- | ||
| - | Zusatzaufgaben: | + | [[algorithmen:algolektionl1|Lösungsvorschlag]] |
| - | + | ||
| - | * Gib den Mittelwert der Listenelemente aus. | + | |
| - | * Wie viele Elemente sind größer bzw. kleiner als der Mittelwert? | + | |
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | * Erstelle einen Array $numbers mit den Elementen " | + | |
| - | * Schreibe ein php-Programm, | + | |
| - | + | ||
| - | + | ||
| - | ---- | + | |
| - | + | ||
| - | für ganz Schnelle: | + | |
| - | + | ||
| - | * Finde heraus, welche Laufzeit dein Sortier-Algorithmus für 5, 10, 20, 30, ..., 200, ... Elemente hat und formuliere eine Aussage über die Abhängigkeit der Laufzeit von der Anzahl der Listenelemente. | + | |
| - | + | ||
| - | ===== Lösungsvorschlag ===== | + | |
| - | + | ||
| - | <code php> | + | |
| - | <form action=" | + | |
| - | <input type=" | + | |
| - | <input type=" | + | |
| - | </ | + | |
| - | + | ||
| - | <?php | + | |
| - | $jetzt = microtime(); | + | |
| - | print $jetzt; | + | |
| - | $zahlen = $_POST[' | + | |
| - | $einzelzahlen = explode(" | + | |
| - | $anzahl = count($einzelzahlen); | + | |
| - | + | ||
| - | //echo $anzahl; | + | |
| - | // | + | |
| - | + | ||
| - | // Alle " | + | |
| - | $dieguten = array(); | + | |
| - | for( $i=0; $i< | + | |
| - | if( is_numeric($einzelzahlen[$i])){ | + | |
| - | print "Index $i: $einzelzahlen[$i] ist Zahl<br />"; | + | |
| - | | + | |
| - | } | + | |
| - | } | + | |
| - | + | ||
| - | print_r($dieguten); | + | |
| - | + | ||
| - | $anzahl = count($dieguten); | + | |
| - | $grenze = 0; | + | |
| - | + | ||
| - | while($grenze < $anzahl) { | + | |
| - | // kleinstes Element suchen | + | |
| - | $index_min = $grenze; | + | |
| - | for( $i = $grenze; $i< | + | |
| - | if ($dieguten[$i] < $dieguten[$index_min]) { | + | |
| - | $index_min = $i; | + | |
| - | } | + | |
| - | } | + | |
| - | // $dieguten[$index_min] ist das kleinste Element# | + | |
| - | // vertausche $dieguten[$grenze] mit $dieguten[$index_min] | + | |
| - | $zwischen = $dieguten[$grenze]; | + | |
| - | $dieguten[$grenze] = $dieguten[$index_min]; | + | |
| - | $dieguten[$index_min] = $zwischen; | + | |
| - | // Grenze eins nach rechts | + | |
| - | $grenze++; | + | |
| - | } | + | |
| - | $zeit = microtime() - $jetzt; | + | |
| - | + | ||
| - | print_r($dieguten); | + | |
| - | + | ||
| - | print " | + | |
| - | ?> | + | |
| - | </ | + | |
| | | ||
| - | * [[algorithmen: | + | [[algorithmen: |
algorithmen/algolektion03.1297952585.txt.gz · Zuletzt geändert: 17.02.2011 14:23 von Frank Schiebel
