Thread Mehrdimensionale Arrays
(22 answers)
Opened by der_thomas at 2013-09-27 22:49
Ich habe mir jetzt mal eine kleine Sortierfunktion gebaut.
(Ja ich weiß, Bubble Sort ist nicht gerade ein Muster an Effektivität, aber vorerst reicht das) Dazu meine Frage: Kann man solche mehrdimensionalen Arrays nur auf diese Weise sortieren, oder funktioniert das auch mit der eingebauten sort Funktion ? (Hab keine Ahnung wie ich die da vom Syntax her einbauen könnte) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/usr/bin/perl use v5.12; use warnings; my @matrix = (["A1", "A2", "A3", "A4", "vw", "A5"], ["B1", "B2", "B3", "B4", "skoda", "B6"], ["C1", "C2", "C3", "C4", "scoda", "C6"], ["D1", "D2", "D3", "D4", "toyota", "D6"], ["E1", "E2", "E3", "E4", "ford", "E6"], ["F1", "F2", "F3", "F4", "renault", "F5"] ); sub bubble_sort{my $spalte = shift; my $getauscht = 0; my $zaehler = 0; for my $j (0..$#matrix){ for my $i (0..$#matrix-1){ if ($matrix[$i]->[$spalte] gt $matrix[$i+1]->[$spalte]){ ($matrix[$i], $matrix[$i+1]) = ($matrix[$i+1], $matrix[$i]); $getauscht = 1; $zaehler++; } } if (!$getauscht){last;} } say "\n\nSuch-Durchgaenge $zaehler"; } say "Vor dem Sortieren"; for my $i (0..5){ say "$matrix[$i]->[0] > $matrix[$i]->[4]"; } bubble_sort(4); # "4" weil die Matrix nach der Spalte 4 sortiert werden soll say "\n\nNach dem Sortieren"; for (my $i=0; $i<=5; $i++){ say "$matrix[$i]->[0] > $matrix[$i]->[4]"; } print "\n\n"; Kleine Zusatzfrage: Wie man sieht habe ich bei "Vor dem Sortieren" und bei "Nach dem Sortieren" zwei verschiedene Varianten einer for Schleife eingesetzt. Spricht etwas gegen die simplere Version bei "Vor dem Sortieren", abgesehen davon dass Steps !=1 vermutlich nicht möglich sind und nur vorwärts gezählt werden kann ? modedit Editiert von pq: Teilbaum "sortieren" erstellt Last edited: 2013-10-06 21:39:48 +0200 (CEST) |