这是一种使用 Quicksort 的分区算法在 n 元素数组中查找第 k 个最小数的算法。
small(a,i,j,k)
{
if(i==j) return(a[i]);
else
{
m=partition(a,i,j);
if(m==k) return(a[m]);
else
{
if(m>k) small(a,i,m-1,k);
else small(a,m+1,j,k);
}
}
}
其中 i,j 是数组的开始和结束索引(ji=n(数组中的元素数)),k 是第 k 个最小的没有。我想知道上述算法的最佳情况和平均情况以及简要情况。我知道我们不应该在最好的情况下计算终止条件,并且分区算法也需要 O(n)。如果可能的话,我不想要渐近符号,而是精确的数学结果。