www.mucker.at http://www.mucker.at Helmut Mucker de Sortieren durch Auswahl (Selection Sort) http://www.mucker.at/2006//07#selectionsort <!-- amazon-search: Algorithmen Datenstrukturen --> <!-- amazon-mode: books --> <p> Eines der einfachen Sortierverfahren mit einer Laufzeit von O(n&sup2;), hier implementiert in Perl. Der Algorithmus lautet folgendermaßen: <ol> <li>Initialisiere eine leere Folge, sie nimmt die sortierten Elemente auf.</li> <li>Solange die unsortierte Folge nicht leer ist, entnimm ihr das Minimum und hänge es die sortierte Folge an.</li> </ol> <pre> #!/usr/bin/perl use strict; use warnings; my @array = (12,67,14,82,99,18,21,78,98,33,10); my $first = 0; my $last = $#array; &PrintArray(); &SelectionSort(); sub SelectionSort { my ($min,$i,$j,$minindex) = undef; foreach $i ($first ... ($last - 1)) { $min = $array[$i]; $minindex = $i; foreach $j (($i + 1) ... $last) { if ($array[$j] < $min) { $min = $array[$j]; $minindex = $j; } } &Exchange($i,$minindex); &PrintArray(); } } sub PrintArray { foreach my $i (0 ... $#array) {print $array[$i]," ";} print "\n"; } sub Exchange { my ($i,$j) = @_; my $tmp = $array[$i]; $array[$i] = $array[$j]; $array[$j] = $tmp; } </pre> </p>