Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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