def qsort(arr)
return arr if arr.size<2
small=arr.reject{|i| i>=arr[0]}
large=arr.reject{|i| i<=arr[0]}
qsort(small) + arr.reject{|i| i!=arr[0]} + qsort(large)
end
这里用了 3 趟遍历实现 partition,仅仅是为了读起来容易。 但完全可以用一趟实现 partition,但感觉代码略丑。
有没有更好的实现?