C++ இல் பல உருப்படி தேடல் (Multiple-Item Search) அல்காரிதம்- விளக்கம், எடுத்துக்காட்டு மற்றும் குறியீடு

பட்டியலில் உள்ள ஒரு குறிப்பிட்ட உறுப்பின் அனைத்து நிகழ்வுகளையும் கண்டறிய பல உருப்படி தேடல் அல்காரிதம் பயன்படுத்தப்படுகிறது. ஒற்றை உருப்படி தேடல் அல்காரிதம்களைப் போலன்றி, இந்த அணுகுமுறை இலக்கு உறுப்புகளின் பல நிகழ்வுகளைக் கண்காணிக்கும் மற்றும் அவற்றின் நிலைகளின் பட்டியலை வழங்குகிறது.

எப்படி இது செயல்படுகிறது

  1. பட்டியலின் தொடக்கத்திலிருந்து தொடங்கவும்.
  2. பட்டியலில் உள்ள ஒவ்வொரு உறுப்பு வழியாகவும் மீண்டும் செய்யவும்.
  3. தற்போதைய உறுப்பை இலக்கு மதிப்புடன் ஒப்பிடுக.
  4. தற்போதைய உறுப்பு இலக்கு மதிப்புக்கு சமமாக இருந்தால், அதன் நிலையை பதிவு செய்யவும்.
  5. அடுத்த உறுப்புக்குச் சென்று 3-4 படிகளை மீண்டும் செய்யவும்.
  6. முழு பட்டியலையும் மீண்டும் செய்த பிறகு, பதிவுசெய்யப்பட்ட நிலைகளின் பட்டியலைத் திரும்பவும்.

உதாரணமாக

முழு எண்களின் பட்டியலைக் கருத்தில் கொள்வோம், மேலும் 23 என்ற எண்ணின் அனைத்து நிகழ்வுகளையும் கண்டுபிடிக்க விரும்புகிறோம்.

பட்டியல்: {12, 23, 45, 23, 56, 23, 89, 90}

  1. தொடக்கத்தில் இருந்து தொடங்கவும்: 12. விரும்பிய எண் அல்ல.
  2. அடுத்த உறுப்புக்குச் செல்லவும்: 23. பொருத்தம் கண்டறியப்பட்டது, பதிவு நிலை 1.
  3. அடுத்த உறுப்புக்குச் செல்லவும்: 45. விரும்பிய எண் அல்ல.
  4. அடுத்த உறுப்புக்குச் செல்லவும்: 23. பொருத்தம் கண்டறியப்பட்டது, பதிவு நிலை 3.
  5. அடுத்த உறுப்புக்குச் செல்லவும்: 56. விரும்பிய எண் அல்ல.
  6. அடுத்த உறுப்புக்குச் செல்லவும்: 23. பொருத்தம் கண்டறியப்பட்டது, பதிவு நிலை 5.
  7. அடுத்த உறுப்புக்குச் செல்லவும்: 89. விரும்பிய எண் அல்ல.
  8. அடுத்த உறுப்புக்குச் செல்லவும்: 90. விரும்பிய எண் அல்ல.
  9. மீண்டும் செய்த பிறகு, நிலைகளின் பட்டியலைத் தரவும்: [1, 3, 5].

C++ இல் எடுத்துக்காட்டு குறியீடு

#include <iostream>  
#include <vector>  
  
std::vector<int> multipleItemSearch(const std::vector<int>& arr, int target) {  
    std::vector<int> positions;  
  
    for(int i = 0; i < arr.size(); ++i) {  
        if(arr[i] == target) {  
            positions.push_back(i);  
        }  
    }  
  
    return positions;  
}  
  
int main() {  
    std::vector<int> numbers = {12, 23, 45, 23, 56, 23, 89, 90};  
    int target = 23;  
  
    std::vector<int> result = multipleItemSearch(numbers, target);  
  
    std::cout << "Occurrences of " << target << " found at positions: ";  
    for(int pos: result) {  
        std::cout << pos << ";  
    }  
    std::cout << std::endl;  
  
    return 0;  
}  

கொடுக்கப்பட்ட எடுத்துக்காட்டில், multipleItemSearch முழு எண்களின் பட்டியலில் 23 எண்ணின் அனைத்து நிகழ்வுகளையும் கண்டறிய செயல்பாடு பயன்படுத்தப்படுகிறது. இதன் விளைவாக அனைத்து நிகழ்வுகளின் நிலைகளையும் கொண்ட ஒரு திசையன் இருக்கும்(நிலைகள் 0 இலிருந்து தொடங்கும்).