在C ++中的旋转排序数组中找到旋转计数

考虑我们有一个数组,它是旋转排序的数组。我们必须找到排序数组所需的转数。(我们将考虑从右向左旋转。)

假设数组类似于:{15,17,1,2,6,6,11},那么我们必须旋转数组两次以进行排序。最终订单为{1、2、6、11、15、17}。这里的输出是2。

逻辑很简单。如果我们注意到,我们可以看到转数与最小元素的索引值相同。因此,如果获得最小元素,则其索引将为结果。

示例

#include <iostream>

using namespace std;

int getMinIndex(int arr[], int n){

   int index = 0;

   for(int i = 1; i<n; i++){

      if(arr[i] < arr[index]){

         index = i;

      }

   }

   return index;

}

int countNumberOfRotations(int arr[], int n){

   return getMinIndex(arr, n);

}

int main() {

   int arr[] = {15, 17, 1, 2, 6, 11};

   int n = sizeof(arr)/sizeof(arr[0]);

   cout << "Number of required rotations: " << countNumberOfRotations(arr, n);

}

输出结果

Number of required rotations: 2

以上是 在C ++中的旋转排序数组中找到旋转计数 的全部内容, 来源链接: utcz.com/z/322432.html

回到顶部