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