the follow code gives the ith smallest number, how do you modify it so it gives the ith largest number ?
int random_selection(int* arr, int start, int end, int k)
{
if(start == end)
return arr[start];
if(k ==0) return -1;
if(start < end)
{
int mid = random_partition(arr, start, end);
int i = mid - start + 1;
if(i == k)
return arr[mid];
else if(k < i)
return random_selection(arr, start, mid-1, k);
else
return random_selection(arr, mid+1, end, k-i);
}
}