อัลกอริทึมการค้นหาหลายรายการใช้เพื่อค้นหารายการที่เกิดขึ้นทั้งหมดขององค์ประกอบเฉพาะในรายการ ซึ่งแตกต่างจากอัลกอริทึมการค้นหารายการเดียว วิธีการนี้ติดตามการเกิดขึ้นหลายครั้งขององค์ประกอบเป้าหมายและส่งคืนรายการตำแหน่ง
มันทำงานอย่างไร
- เริ่มตั้งแต่ต้นรายการ
- วนซ้ำแต่ละองค์ประกอบในรายการ
- เปรียบเทียบองค์ประกอบปัจจุบันกับค่าเป้าหมาย
- หากองค์ประกอบปัจจุบันเท่ากับค่าเป้าหมาย ให้บันทึกตำแหน่ง
- ดำเนินการต่อไปยังองค์ประกอบถัดไปและทำซ้ำขั้นตอนที่ 3-4
- หลังจากวนซ้ำผ่านรายการทั้งหมด ให้ส่งคืนรายการตำแหน่งที่บันทึกไว้
ตัวอย่าง
ลองพิจารณารายการของจำนวนเต็มและเราต้องการหาจำนวน 23 ที่เกิดขึ้นทั้งหมด
รายการ: {12, 23, 45, 23, 56, 23, 89, 90}
- เริ่มจากจุดเริ่มต้น: 12. ไม่ใช่หมายเลขที่ต้องการ.
- ย้ายไปยังองค์ประกอบถัดไป: 23. พบการจับคู่ บันทึกตำแหน่งเป็น 1
- ย้ายไปยังองค์ประกอบถัดไป: 45 ไม่ใช่ตัวเลขที่ต้องการ
- ย้ายไปยังองค์ประกอบถัดไป: 23. พบการจับคู่ บันทึกตำแหน่งเป็น 3
- ย้ายไปยังองค์ประกอบถัดไป: 56 ไม่ใช่ตัวเลขที่ต้องการ
- ย้ายไปยังองค์ประกอบถัดไป: 23. พบการจับคู่ บันทึกตำแหน่งเป็น 5
- ย้ายไปยังองค์ประกอบถัดไป: 89 ไม่ใช่หมายเลขที่ต้องการ
- ย้ายไปยังองค์ประกอบถัดไป: 90 ไม่ใช่ตัวเลขที่ต้องการ
- หลังจากวนซ้ำ ให้ส่งคืนรายการตำแหน่ง: [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)