লোকালিটি অফ রেফারেন্স (locality of reference) ভিত্তিক সার্চিং-এ, মেমরি অ্যাক্সেস প্যাটার্ন অনুযায়ী ডেটা এলিমেন্টগুলো রি-অ্যালোকেট করা হয়।
এখানে লিনিয়ার সার্চিং (linear searching) মেথড ব্যবহার করে এলিমেন্ট সার্চ করা হয়।
অ্যালগরিদম
শুরু
int find(int *intarray, int n, int item)
comparisons = 0 ইনিশিয়ালাইজ করুন
for i = 0 থেকে n-1
comparisons বৃদ্ধি করুন
যদি (item == intarray[i]) হয়, তবে
এলিমেন্ট ইনডেক্সসহ প্রিন্ট করুন
ব্রেক করুন
যদি (i == n-1) হয়, তবে
"element not found" প্রিন্ট করুন
return -1
"Total comparisons" প্রিন্ট করুন
j = i থেকে i>0 পর্যন্ত
intarray[j] = intarray[j-1]
intarray[0] = item
return 0
শেষ
উদাহরণ কোড
#include <iostream>
using namespace std;
// লিনিয়ার সার্চ করার ফাংশন
int find(int *intarray, int n, int item) {
int i;
int comparisons = 0;
// সব আইটেম নেভিগেট করুন
for (i = 0; i < n; i++) {
// তুলনার সংখ্যা কাউন্ট করুন
comparisons++;
// আইটেম পাওয়া গেলে লুপ ব্রেক করুন
if (item == intarray[i]) {
cout << "element found at: " << i << endl;
break;
}
// ইনডেক্স শেষে পৌঁছালে আইটেম নেই
if (i == n-1) {
cout << "\nThe element not found.";
return -1;
}
}
printf("Total comparisons made: %d", comparisons);
// ম্যাচ হওয়া আইটেমের আগের সব এলিমেন্ট শিফ্ট করুন
for (int j = i; j > 0; j--)
intarray[j] = intarray[j-1];
// সাম্প্রতিক সার্চ করা আইটেম ডেটা অ্যারেতে সবচেয়ে আগে রাখুন
intarray[0] = item;
return 0;
}
int main() {
int intarray[20] = {1,2,3,4,6,7,9,11,12,14,15,16,26,19,33,34,43,45,55,66};
int i, n;
char ch;
// প্রাথমিক ডেটা অ্যারে প্রিন্ট
cout << "\nThe array is: ";
for (i = 0; i < 20; i++)
cout << intarray[i] << " ";
up:
cout << "\nEnter the Element to be searched: ";
cin >> n;
// আপডেট করা ডেটা অ্যারে প্রিন্ট
if (find(intarray, 20, n) != -1) {
cout << "\nThe array after searching is: ";
for (i = 0; i < 20; i++)
cout << intarray[i] << " ";
}
cout << "\n\nWant to search more.......yes/no(y/n)? ";
cin >> ch;
if (ch == 'y' || ch == 'Y')
goto up;
return 0;
}
আউটপুট
The array is: 1 2 3 4 6 7 9 11 12 14 15 16 26 19 33 34 43 45 55 66 Enter the Element to be searched: 26 element found at: 12 Total comparisons made: 13 The array after searching is: 26 1 2 3 4 6 7 9 11 12 14 15 16 19 33 34 43 45 55 66 Want to search more.......yes/no(y/n)? y Enter the Element to be searched: 0 The element not found. Want to search more.......yes/no(y/n)? n