พิจารณาว่าเรามีอาร์เรย์ซึ่งหมุนอาร์เรย์เรียงลำดับ เราต้องค้นหาจำนวนการหมุนที่จำเป็นในการจัดเรียงอาร์เรย์ (เราจะพิจารณาหมุนจากขวาไปซ้าย)
สมมติว่าอาร์เรย์มีลักษณะดังนี้:{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