在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
热门推荐
6 保研的祝福语简短
10 年轻20岁祝福语简短
11 朋友结婚祝福语信息简短
12 女孩婚礼贺卡祝福语简短
13 30段点歌简短祝福语
14 虎年春节祝福语图文简短
15 写给后妈祝福语大全简短
16 简短回复生日祝福语
17 校长送毕业祝福语简短
18 毕业立体贺卡祝福语简短