用 C++ 在旋轉排序陣列中查詢旋轉計數


假設我們有一個數組,它是一個旋轉排序陣列。我們必須找出排序陣列所需的旋轉次數。 (我們將旋轉從右向左考慮。)

假設陣列如下:{15, 17, 1, 2, 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

更新於:2019-10-21

190 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.