func qckSort(v: T[]) -> T[] { switch v { case []: return [] default: let head = v[0] var tail = v.copy() tail.removeAtIndex(0) return qckSort(tail.filter({$0 <= head})) + [head] + qckSort(tail.filter({$0 > head})) } }