假设您在 C 编程语言中提供了以下函数声明。
int partition (int a[], int n);
函数将 a[] 的第一个元素作为主元,重新排列数组,使得所有小于或等于主元的元素都在数组的左侧,所有大于主元的元素都在右侧.此外,它还移动枢轴,使枢轴成为左侧部分的最后一个元素。返回值是左侧部分的元素数。以下 C 编程语言中的部分给定函数用于使用分区函数查找大小为 n 的数组 a[] 中的第 k 个最小元素。我们假设 k ≤ n
int kth_smallest (int a[], int n, int k)
{
int left_end = partition (a, n);
if (left_end+1==k)
{
return a [left_end];
}
if (left_end+1 > k)
{
return kth_smallest (____________________);
}
else
{
return kth_smallest (____________________);
}
}
缺失的参数列表分别是
(A) (a, left_end, k) 和 (a+left_end+1, n–left_end–1, k–left_end–1)
(B) (a, left_end, k) 和 (a, n–left_end–1, k–left_end–1)
(C) (a, left_end+1, N–left_end–1, K–left_end–1) and(a, left_end, k)
(D) (a, n–left_end–1, k–left_end–1) 和 (a, left_end, k)答案:(一)
说明:见https://www.geeksforgeeks.org/kth-smallestlargest-element-unsorted-array/的方法4
这个问题的测验