一行實現quick sort演算法:
QuickSort[l_List] :=
l /. {x_, y__} :>
Join @@ QuickSort /@ {Select[{y}, # < x &], {x},
Select[{y}, # >= x &]}
/. :expr/.rules
applies a rule or list of rules in an attempt to transform each
subpart of an expression expr.
_ :_ or Blank[]
is a pattern object that can stand for any Mathematica expression.
x_ gives a name to _ as x
x:{pattern} gives a name to pattern as x
__ :__ (two _ characters) or BlankSequence[]
is a pattern object that can stand for any sequence of one or more
Mathematica expressions.
___ :___ (three _ characters) or BlankNullSequence[]
is a pattern object that can stand for any sequence of zero or more \
Mathematica expressions.
.. :p.. or Repeated[p]
is a pattern object which represents a sequence of one or more \
expressions, each matching p.
:> :lhs:>rhs or lhs:>rhs
represents a rule that transforms lhs to rhs, evaluating rhs only
after the rule is used.
@@ :Apply[f,expr]
or f@@expr replaces the head of expr by f.
/@ :Map[f,expr] or f/@expr
applies f to each element on the first level in expr.
& :Function[body]
or body& is a pure function. The formal parameters are # (or #1), #2, etc.
沒有留言:
張貼留言