এখানে আমরা দেখব কিভাবে একটি দিয়ে गये অ্যারেতে ফিক্সড পয়েন্ট খুঁজে বের করা যায়। একটি অ্যারেতে একটি উপাদানকে ফিক্সড পয়েন্ট বলা হয় যদি তার মান তার ইনডেক্সের সমান হয়। এই প্রোগ্রামটি ফিক্সড পয়েন্ট পাওয়া গেলে মানটি রিটার্ন করবে, অন্যথায় -১ রিটার্ন করবে। অ্যারেতে ঋণাত্মক সংখ্যাও থাকতে পারে এবং উপাদানগুলো সর্ট করা আছে।
সমাধানের পদ্ধতি
এই সমস্যাটি O(log n) সময়ে সমাধান করতে আমরা বাইনারি সার্চ পদ্ধতি ব্যবহার করব। প্রথমে মধ্যম উপাদানটি ফিক্সড পয়েন্ট কিনা তা যাচাই করব। যদি হয়, তবে রিটার্ন করব। যদি না হয়, তবে দুটি পরিস্থিতি হতে পারে: যদি মধ্যম উপাদানের ইনডেক্স তার মানের চেয়ে বড় হয়, তবে ফিক্সড পয়েন্ট ডান পাশে পাওয়া যেতে পারে, অন্যথায় বাম পাশে।
উদাহরণ কোড
#include <iostream>
using namespace std;
int getFixedPoint(int arr[], int left, int right) {
if (right >= left) {
int mid = (left + right) / 2;
if (mid == arr[mid])
return mid;
if (mid > arr[mid])
return getFixedPoint(arr, (mid + 1), right);
else
return getFixedPoint(arr, left, (mid - 1));
}
return -1;
}
int main() {
int arr[] = {-10, -1, 0, 3, 10, 11, 9, 50, 56};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Fixed Point: " << getFixedPoint(arr, 0, n-1);
return 0;
}
আউটপুট
Fixed Point: 3