কম্পিউটার টিউটোরিয়াল

C++-এ লোকালিটি অফ রেফারেন্স (Locality of Reference) ভিত্তিক সার্চিং

লোকালিটি অফ রেফারেন্স (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
  1. C++ প্রোগ্রাম: বড় সংখ্যক এলিমেন্টে কুইক সোর্ট করা

  2. ইউনিফর্ম বাইনারি সার্চ انجام देने वाला C++ প্রোগ্রাম

  3. সেলফ-অর্গানাইজিং লিস্ট ব্যবহার করে সার্চিং করার C++ প্রোগ্রাম

  4. শেকার সার্ট বাস্তবায়ন করার C++ প্রোগ্রাম