/*
随机选择
令val是数组
a[i],...,a[j]
已排序后位于下标k(i<=k<=j)处的值。本算法将该数组重新安排,使val在下标k处,所有下标小于k的单元中的值都小于val,所有下标大于k的单元中的值都大于或等于val.
算法中使用随机分区算法
*/
InputParameters:a,i,j,k
OuputParameter:a
random_select(a,i,j,k){
if(i<j){
p = random_partition(a,i,j)
if(k == p)
return
if(k < p)
random_select(a,i,p-1,k)
else
random_select(a,p+1,j,k) }
}