📜  门| GATE-CS-2015(Set 2)|第55章

📅  最后修改于: 2021-07-02 15:01:34             🧑  作者: 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)和(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
这个问题的测验