การค้นหาแบบไบนารีที่เรียกว่าการค้นหาลอการิทึมคืออัลกอริธึมการค้นหาที่ค้นหาองค์ประกอบในอาร์เรย์ที่จัดเรียง อัลกอริทึมจะแบ่งอาร์เรย์ออกเป็นสองส่วนซ้ำๆ หากพบองค์ประกอบที่ตำแหน่งตรงกลาง มิฉะนั้น ให้เรียกใช้การหารและตรวจสอบอีกครั้งจนกว่าจะพบองค์ประกอบ
กำลังดำเนินการ
อัลกอริทึมทำงานโดยเปรียบเทียบองค์ประกอบตรงกลางของอาร์เรย์ที่จัดเรียงกับองค์ประกอบที่ต้องการค้นหา
หากองค์ประกอบการค้นหา เท่ากัน ไปที่องค์ประกอบตรงกลาง แล้ว ส่งคืนดัชนี ของธาตุ
หากองค์ประกอบการค้นหามากกว่า กว่าองค์ประกอบตรงกลาง ค้นหาในอาร์เรย์ย่อยด้านซ้าย เช่น อาร์เรย์ย่อยจากองค์ประกอบถัดไปของตรงกลางไปยังส่วนท้ายของอาร์เรย์
หากองค์ประกอบการค้นหา น้อยกว่า กว่าองค์ประกอบตรงกลาง ค้นหาในอาร์เรย์ย่อยด้านขวา นั่นคือ อาร์เรย์ย่อยจากองค์ประกอบแรกไปยังองค์ประกอบที่อยู่ข้างหน้าตรงกลางของอาร์เรย์
ไวยากรณ์
การเรียกใช้การเรียงลำดับไบนารีมาตรฐาน ใช้ไวยากรณ์ต่อไปนี้ -
binary_search(start_address , end_address , element)
พารามิเตอร์
start_address คือที่อยู่ขององค์ประกอบแรกของอาร์เรย์
end_address คือที่อยู่ขององค์ประกอบสุดท้ายของอาร์เรย์
องค์ประกอบคือองค์ประกอบที่จะพบในอาร์เรย์
คืนสินค้า
ส่งกลับจำนวนเต็มที่มีค่าเท่ากับดัชนีขององค์ประกอบในอาร์เรย์หากพบเป็นอย่างอื่นจะส่งกลับ 0
ตัวอย่าง
#include <algorithm> #include <iostream> using namespace std; void printArray(int a[], int arraysize){ for (int i = 0; i < arraysize; ++i) cout << a[i] << " "; } int main(){ int arr[] = {1 , 5, 9, 7 , 3, 2 , 0 , 4}; int sizeofarr = sizeof(arr)/sizeof(arr[0]); cout<<"The Element of array are :\n"; printArray(arr , sizeofarr); cout<<"\nSorting Elements of array."; sort(arr , arr+sizeofarr); cout<<"\nSorted array is : "; printArray(arr, sizeofarr); cout<<"\nElement to be searched is 4"; if(binary_search(arr , arr+sizeofarr , 4)) cout<<"\nElement found "; else cout<<"\nElement not found"; }
ผลลัพธ์
The Element of array are : 1 5 9 7 3 2 0 4 Sorting Elements of array. Sorted array is : 0 1 2 3 4 5 7 9 Element to be searched is 4