(phixonline)--> sequence s = {9, 8, 7, 6, 5, 0, 1, 2, 3, 4} function quick_select(integer k) integer left = 1, right = length(s) while left<right do object pivotv = s[k]; {s[k], s[right]} = {s[right], s[k]} integer pos = left for i=left to right do if s[i]<pivotv then {s[i], s[pos]} = {s[pos], s[i]} pos += 1 end if end for {s[right], s[pos]} = {s[pos], s[right]} if pos==k then exit end if if pos<k then left = pos + 1 else right = pos - 1 end if end while return s[k] end function for i=1 to 10 do integer r = quick_select(i) printf(1," %d",r) end for {} = wait_key()