Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การค้นหาไบนารีในไลบรารีเทมเพลตมาตรฐาน C++ (STL)


การค้นหาแบบไบนารีที่เรียกว่าการค้นหาลอการิทึมคืออัลกอริธึมการค้นหาที่ค้นหาองค์ประกอบในอาร์เรย์ที่จัดเรียง อัลกอริทึมจะแบ่งอาร์เรย์ออกเป็นสองส่วนซ้ำๆ หากพบองค์ประกอบที่ตำแหน่งตรงกลาง มิฉะนั้น ให้เรียกใช้การหารและตรวจสอบอีกครั้งจนกว่าจะพบองค์ประกอบ

กำลังดำเนินการ

อัลกอริทึมทำงานโดยเปรียบเทียบองค์ประกอบตรงกลางของอาร์เรย์ที่จัดเรียงกับองค์ประกอบที่ต้องการค้นหา

หากองค์ประกอบการค้นหา เท่ากัน ไปที่องค์ประกอบตรงกลาง แล้ว ส่งคืนดัชนี ของธาตุ

หากองค์ประกอบการค้นหามากกว่า กว่าองค์ประกอบตรงกลาง ค้นหาในอาร์เรย์ย่อยด้านซ้าย เช่น อาร์เรย์ย่อยจากองค์ประกอบถัดไปของตรงกลางไปยังส่วนท้ายของอาร์เรย์

หากองค์ประกอบการค้นหา น้อยกว่า กว่าองค์ประกอบตรงกลาง ค้นหาในอาร์เรย์ย่อยด้านขวา นั่นคือ อาร์เรย์ย่อยจากองค์ประกอบแรกไปยังองค์ประกอบที่อยู่ข้างหน้าตรงกลางของอาร์เรย์

ไวยากรณ์

การเรียกใช้การเรียงลำดับไบนารีมาตรฐาน ใช้ไวยากรณ์ต่อไปนี้ -

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