Hitro urejanje/Implementacija (Mathematica)

Iz MaFiRaWiki

Clear[HitroUrejanje, Deli]

Deli[s_, pivot_, v_, r_] /; v < pivot := {Take[s, pivot - 1], Drop[s, 
      pivot - 1]}
Deli[s_, pivot_, v_, r_] /;
   s[[pivot]] > r := Deli[s, pivot + 1, v, r]
Deli[s_, pivot_, v_, r_] /; s[[v]] < r := Deli[s, pivot, v - 1, r]
Deli[s_, pivot_, v_, r_] := Deli[ReplacePart[s, s, {{pivot}, {v}}, {{v}, {
    pivot}}], pivot + 1, v - 1, r] 

HitroUrejanje[s_List] /; Length[s] ≤ 1 := s
HitroUrejanje[s_List] := Module[{x, a, b, l, t, r},
    l = Length[s];
    t = Random[Integer, {1, l}];
    r = s[[t]];
    x = Deli[s, 1, l, r];
    a = x[[1]];
    b = x[[2]];
    Join[HitroUrejanje[a], HitroUrejanje[b]]
    ]

Osebna orodja