Hallo Udo,
uuuups, da hatte ich aber mächtig ein Brett vorm Kopf. Das hätte ich mal gleich sehen müssen..... da habe ich mal
wieder nicht auf das Message-Fenser geachtet. Vielen Dank für den schnellen Hinweis.
Viele Grüße
m.g.
Am 07.07.2012 um 22:34 schrieb su.krause@XXXXXXX.ch:
> Hallo Michael,
>
> ja, das ist klar; liste_List ist in der Moduleversion die input-Variable, die Sie nicht überschreiben
> können;
> der Fehler passiert gleich beim ersten Vertauschungsversuch, die liste muss auf eine Module-lokale Variable xL
> kopiert werden
>
> Remove[selectionSort]
> selectionSort[liste_List] := Module[{xL = liste, L = Length[liste]},
> Do[If[xL
> [[i]] > xL[[j]], xL[[{i, j}]] = xL[[{j, i}]]], {i, L}, {j,
> i + 1, L}];
> xL
> ]
>
> Gruss
> Udo.
>
>
> ----Ursprüngliche
> Nachricht----
> Von: Michael.Gamer@XXXXXXX.de
> Datum: 07.07.2012 10:54
> An: <demug@XXXXXXX.ch>
> Betreff: Selection Sort
> in MMA Hilfe... geht nur für "kleine" Listen???
>
> Hallo Forum,
>
> ich habe da mal ein (sonderbares) Problem.
> Für meine Studierenden habe ich ein Beispiel gemacht, um zu zeigen das BubbleSort die Komplexität O(n^2) hat. keine
> große Sache, kein Problem. Jetzt das Gleiche mit SelectionSort. Der Einfachheit halber ist der Code ja schon in der
> MMA
> Hilfe drin (illustriert die Do-Schleife) und da nehme ich natürlich den:
>
> Do[If[list[[i]] > list[[j]], list[[{i, j}]] =
> list[[{j, i}]]], {i,Length[list]}, {j, i + 1, Length[list]}]; list
>
>
> Jetzt habe ich das in einen Modul gepackt:
>
>
> selectionSort[liste_List] := Module[{},
> Do[If[liste[[i]] > liste[[j]], liste[[{i, j}]] = liste[[{j, i}]]], {i,Length
> [liste]}, {j, i + 1, Length[liste]}];
> liste
> ]
>
> und siehe da ich bekomme Fehlermeldungen, wenn die Liste eine
> bestimmte Größe überschreitet. Meine Vermutung ist, daß das mit dem RETURN Wert der Do Anweisung zu tun hat, so ganz
> verstehen kann ich das aber nicht. Hat da jemand eine Erklärung?
> Ich habe mal das MMA-Notebook mitgeschickt.
>
> Viele
> Grüße
>
> m.g.
>
>
> Michael Gamer
> Zur Römerbrücke 19
> 63456 Hanau
>
> Telefon: 06181 663363
> mobil: 0176 430 99707
> Fax: 06181
> 663363
> Mail: mg@XXXXXXX.de
>
> home: www.michaelgamer.de
>
>
>
>
>
>
>
>
>
>