假设为您提供了以下使用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)和(a,left_end,k)
(D) (a,n–left_end-1,k–left_end-1)和(a,left_end,k)答案: (A)
说明:参见https://www.geeksforgeeks.org/kth-smallestlargest-element-unsorted-array/的方法4
这个问题的测验