Urejanje z izbiranjem/Implementacija Mathematica

Iz MaFiRaWiki

Urejanje z izbiranjem


Najprej definiramo funkcijo zamenjaj[], ki v danem seznamu l zamenja elementa na i-tem in j-tem mestu.

 zamenjaj[l_List, i_, i_] := l
 zamenjaj[l_List, i_, j_] := If[i < j,
   Flatten[{Take[l, i - 1], l[[j]], Drop[Drop[l, i], -(Length[l] - j + 1)], l[[i]], Take[l, -(Length[l] - j)]}],
   zamenjaj[l, j, i]
 ]

Nato definiramo funkcijo urejanjeIzbiranje, ki uredi elemente v seznamu po principu izbiranja.

 urejanjeIzbiranje[l_List] := Module[{meja, seznam},
   seznam = l;
   meja = 1;
   While[meja < Length[l],
    If[seznam[[meja]] == Min[Drop[seznam, meja - 1]],
     seznam = seznam,
     seznam = zamenjaj[seznam, meja, First[Flatten[Position[seznam, Min[Drop[seznam, meja]]]]]]
    ];
   meja++
   ];
  Print["Urejen seznam: ",seznam]
  ]



Delovanje preverimo na različnih primerih:

 In[1]:= urejanjeIzbiranje[{5, 4, 1, 9, 3}]
 Out[1]:= Urejen seznam: {1,3,4,5,9}

 In[2]:= urejanjeIubiranje[{5,1}]
 Out[2]:= Urejen seznam: {1,5}
Osebna orodja