找出第i个小元素(算法导论第三版9.2-4题)
期望时间复杂度:Θ(n)
最坏情况的时间复杂度Θ(n^2)
int randomized_select_based_loop(int *array,int start,int end,int index)
{
while (true)
{
if(start == end)
return array[start];
int middle = randomized_partition(array,start,end);
int position = middle - start + 1;
if(index == position)
return array[middle];
else if(index < position)
end = middle-1;
else
{
start= middle + 1;
index = index - position;
}
}
}
快速排序的随机划分函数:randomized_partition
>>链接地址