💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 在旋转排序数组中找到旋转计数 > 原文: [https://www.geeksforgeeks.org/find-rotation-count-rotated-sorted-array/](https://www.geeksforgeeks.org/find-rotation-count-rotated-sorted-array/) 考虑以递增顺序排序的一组不同数字。 数组(顺时针)旋转了 k 次。 给定这样一个数组,找到 k 的值。 **示例**: ``` Input : arr[] = {15, 18, 2, 3, 6, 12} Output: 2 Explanation : Initial array must be {2, 3, 6, 12, 15, 18}. We get the given array after rotating the initial array twice. Input : arr[] = {7, 9, 11, 12, 5} Output: 4 Input: arr[] = {7, 9, 11, 12, 15}; Output: 0 ``` **方法 1(使用[线性搜索](http://quiz.geeksforgeeks.org/linear-search/))** 如果仔细研究示例,我们会发现转数等于最小元素的索引。 一个简单的线性解决方案是找到最小元素并返回其索引。 以下是该想法的 C++ 实现。 ## C++ ```cpp // C++ program to find number of rotations // in a sorted and rotated array. #include<bits/stdc++.h> using namespace std; // Returns count of rotations for an array which // is first sorted in ascending order, then rotated int countRotations(int arr[], int n) {     // We basically find index of minimum     // element     int min = arr[0], min_index;     for (int i=0; i<n; i++)     {         if (min > arr[i])         {             min = arr[i];             min_index = i;         }     }     return min_index; } // Driver code int main() {     int arr[] = {15, 18, 2, 3, 6, 12};     int n = sizeof(arr)/sizeof(arr[0]);     cout << countRotations(arr, n);     return 0; } ```