📜  门| GATE-CS-2015(套装2)|第 55 题

📅  最后修改于: 2021-09-26 03:13:12             🧑  作者: Mango

假设您在 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
这个问题的测验