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