找出第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
>>链接地址