用 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP